此脚本列出当前目录中的顶级目录,然后通过尝试重命名目录来检查该目录是否正在使用中。如果存在诸如*.!qB
,*.part
或*.dash*
之类的临时文件类型,我需要检查未使用的结果目录,以便可以跳过这些不完整的目录,从而将其余目录留作进一步处理。
reldir = [f for f in os.listdir('.') if os.path.isdir(f)]
for d in reldir:
try:
os.rename(d, os.path.join(d + '_'))
except PermissionError:
continue
os.rename(os.path.join(d + '_'), d)
os.chdir(d)
print(os.getcwd())
# is this really the simplest way?
files = glob.glob('.' + '/**/*.*', recursive=True)
# check for temp files here
print(files)
# finally go back to root
os.chdir(indir)
我不确定是否需要这么复杂。我有batch
格式的临时文件检查所需的代码。
dir *.!qb *.part *.dash* /s /b && goto done
我正在这里寻找最简单,最有效的方法,例如上面的batch
。同样,对其余代码的任何优化也将受到赞赏。
编辑:
为了澄清,这两行是我需要帮助的:
files = glob.glob('.' + '/**/*.*', recursive=True)
# check for temp files here
第一行建立了所有文件的列表(可能是不必要的),而排除行(第二行丢失了)是我需要一种方法来查找所提到的临时文件,而这不会停止脚本,而是继续进行下一个迭代。
答案 0 :(得分:1)
我认为您想为每个模式和continue
做一个递归glob(如果存在匹配项)。
patterns = ['*.!qb', '*.part', '*.dash*']
for d in reldir:
# ...
g = (glob.glob(os.path.join('**', p), recursive=True) for p in patterns)
if any(g):
continue
尽管像评论中提到的Amir一样,您无需更改目录,只需将d
放入全局:
g = [glob.glob(os.path.join(d, '**', p) ...