我每天都会创建几个目录。七天后,我将在这些目录中删除一个沙箱并删除它们。我使用时间戳来命名它们。我在下面有一些代码可以告诉你我有什么。
today = datetime.date.today() # Today's date Binary
todaystr = datetime.date.today().isoformat() # Todays date as a string
minus_sevent = today - datetime.timedelta(days = 7) # 7 days ago as a string
minus_seven = minus_sevent.isoformat()
old_folders = minus_seven + '*'
def delete_sandbox():
if os.path.exists(old_folders):
os.chdir(old_folders)
mks_drop_sandbox()
os.chdir(rootDir)
for filename in glob.glob(old_folders):
shutil.rmtree(old_folders)
print 'Sandboxes from 7 days ago removed'
if __name__ == '__main__': myObject = delete_sandbox()
这是我之前用来删除沙箱并删除一个目录的类似代码。但是现在可能有几个版本已完成,我想知道如何输入每个文件夹并执行这些任务。
目录中的文件夹将使用它们的时间和日期创建,我的变量只是删除设定日期的所有文件夹而不管时间。
由于
答案 0 :(得分:3)
old_folders = minus_seven + '*'
这不符合你的想法。这将为您提供一个字面上以*
结尾的文件夹的名称。稍后,os.path.exists()
将返回False
。
您需要做的是遍历目录:
for d in os.listdir(os.getcwd()):
if not os.path.isdir(d) or not d.startswith(minus_seven):
continue
# Do what you need to with 'd' here.
或作为列表理解:
minus_seven_dirs = [d for d in os.listdir(os.getcwd())
if os.path.isdir(d) and d.startswith(minus_seven)]
基本上,您不能将os
个函数提供给列表并期望它们做正确的事情。他们一次只在路径上工作。
答案 1 :(得分:0)
“我想知道如何输入每个文件夹”
您是否在询问os.path.join
是否要创建完整路径名称?
http://docs.python.org/library/os.path.html#os.path.join
或os.chdir
更改工作目录?
答案 2 :(得分:0)
您有两种选择:
使用 os.walk
for root, dirs, files in os.walk('your root'):
for dir in dirs:
os.chdir(os.path.join(root, dir))
delete_sandbox()
使用 os.path.walk 然后更改delete_sandbox以用作回调。
def delete_sandbox(arg, dirname, names):