检查临时文件目录并跳过目录(如果找到)的最有效方法?

时间:2019-09-08 12:02:44

标签: python python-3.x

此脚本列出当前目录中的顶级目录,然后通过尝试重命名目录来检查该目录是否正在使用中。如果存在诸如*.!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

第一行建立了所有文件的列表(可能是不必要的),而排除行(第二行丢失了)是我需要一种方法来查找所提到的临时文件,而这不会停止脚本,而是继续进行下一个迭代。

1 个答案:

答案 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) ...