问题描述
我正在尝试将这段代码放入函数中,这样我就可以避免每次都只复制粘贴代码。这里是我要放入函数中的代码:
{{1}}
edit1:我已经像Chepner的建议一样更改了代码,但问题仍然是没有输出写入到test.txt文件中。 我想念什么?
非常感谢!
解决方法
这个问题没有答案。这取决于您要如何重用此功能。您可以先问自己以下问题:
- 我总是需要打开相同的文件,即
test.txt
,否则,可以将其设置为参数。 - 我将始终将目录更改为同一文件夹,即
"//10.2.30.61/c$\Qlikview_Tropal/apps/ventes"
- 我将始终将相同的文本写入文件,即
{fichiers} = {duration} \n
如果这些内容在不同的上下文中发生变化,则可以使它们成为参数。但是,如果一切都一样,则只需定义一个没有任何参数的函数即可。
,如果您只想拥有函数without
,则可以执行以下任何操作:
def my_function():
f= open("test.txt","w+")
os.chdir("//10.2.30.61/c$\Qlikview_Tropal/apps/ventes")
for fichiers in glob.glob("*"):
today = datetime.datetime.today()
modified_date = datetime.datetime.fromtimestamp(os.path.getmtime(fichiers))
duration = today - modified_date
if duration.days < 1:
f.write(f"{fichiers} = {duration} \n")
像这样my_function()
函数with parameters
:根据您提供的代码,您可以将文件名和url保留为函数的参数,例如:
带有参数的功能可以与不同的参数一起反复使用
def my_function(fileName,URL):
f= open(fileName,"w+")
os.chdir(URL)
for fichiers in glob.glob("*"):
today = datetime.datetime.today()
modified_date = datetime.datetime.fromtimestamp(os.path.getmtime(fichiers))
duration = today - modified_date
if duration.days < 1:
f.write(f"{fichiers} = {duration} \n")
然后将其命名为:
my_function("test.txt","//10.2.30.61/c$\Qlikview_Tropal/apps/ventes")
,
照原样,您不需要任何参数(尽管我将使用with
语句对其稍做重写):
def my_function():
with open("test.txt","w+") as f:
os.chdir("//10.2.30.61/c$\Qlikview_Tropal/apps/ventes")
for fichiers in glob.glob("*"):
today = datetime.datetime.today()
modified_date = datetime.datetime.fromtimestamp(os.path.getmtime(fichiers))
duration = today - modified_date
if duration.days < 1:
f.write(f"{fichiers} = {duration} \n")
my_function()
但是,您可能希望以几种方式对函数进行参数化。硬编码的输出文件名和输入目录都是候选。
def my_function(output_name,input_dir):
with open(output_name,"w+") as f:
os.chdir(input_dir)
for fichiers in glob.glob("*"):
today = datetime.datetime.today()
modified_date = datetime.datetime.fromtimestamp(os.path.getmtime(fichiers))
duration = today - modified_date
if duration.days < 1:
f.write(f"{fichiers} = {duration} \n")
my_function("test.txt","//10.2.30.61/c$\Qlikview_Tropal/apps/ventes")