问题描述
我正在用python编写代码,遇到一个问题。 我做了一个函数,它可以扫描文件夹,并获取与上次的日期和时间进行比较的最后修改的日期和小时,并将其存储在文本文件中。该功能很好用。 我发现要为多个文件夹调用它,我必须制作一个字典,其中包含文件夹列表和每个文本文件的输出名称。
我的问题是,当我运行它时,它仅适用于3个中的1个“项目”。
这是我的代码:
import os,glob,time,datetime
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 < 5:
f.write(f"{fichiers} = {duration} \n")
arguments = {"output1.txt" : "input_dir1/","output2.txt" : "input_dir2/","output3.txt" : "input_dir3/"}
for output_name,input_dir in arguments.items():
my_function(output_name,input_dir)
在这种情况下,我应该有3个文本文件,每个文件分别名为output 1、2和3,每个input_dir都有信息,除了我只有从input_dir1获得的output1.txt。
感谢您的帮助
解决方法
请注意,您调用os.chdir()
时不会返回到先前的目录,这就是为什么它仅在第一次运行时有效的原因,更好的方法是将目录作为参数传递给glob.glob()
{{ 3}}。
但是,如果您设置了os.chdir()
方法,请确保调用os.getcwd()
稍后再返回。
好吧,这只是我的愚蠢。我正在使用Visual Studio代码,我想是因为它没有列出无法正常使用的新创建文件。除了它,而且它不会正确列出它:/