Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查临时文件的目录并在找到时跳过目录的最有效方法是什么?_Python_Python 3.x - Fatal编程技术网

Python 检查临时文件的目录并在找到时跳过目录的最有效方法是什么?

Python 检查临时文件的目录并在找到时跳过目录的最有效方法是什么?,python,python-3.x,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 + '_')) e

此脚本列出当前目录中的顶级目录,然后通过尝试重命名该目录来检查该目录是否正在使用。如果存在类似*的临时文件类型,我需要检查未使用的结果目录。!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)
我不确定它是否需要这么复杂。我有所需的代码为临时文件检查在批处理形式

我在这里寻找最简单、最有效的方法,就像上面的批次一样。另外,对于代码其余部分的任何优化都非常感谢

编辑:

我想澄清一下,这两行是我需要帮助的:

    files = glob.glob('.' + '/**/*.*', recursive=True)
    # check for temp files here

第一行列出了可能不需要的所有文件,排除行缺少的第二行是我需要找到提到的临时文件的地方,在某种程度上,不会停止脚本,而是继续下一次迭代。

我认为您希望为每个模式执行递归全局,如果存在任何匹配项,则继续

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放在glob中:

    g = [glob.glob(os.path.join(d, '**', p) ...

您好,我不知道为什么要使用os.path.join和一个参数,您不需要它。此外,您根本不需要chdir,只需将glob与d一起使用,而不是“.”我无法让它与“d”而不是“.”一起使用,文件的打印输出将变为空括号。不确定您所说的os.path.join仅使用一个参数是什么意思。请澄清您到底需要什么帮助,并将代码缩减到问题部分。看见如果你想得到一般性的建议,也许是一个更好的去处。另外,我也不知道Windows globs的语法,所以如果您能解释一下它们的确切功能,那会有所帮助。@wjandrea我在文章中添加了说明question@Bricktop阿米尔说的是使用变量d,而不是字符串“d”。os.path.joind+''.'为os.path.join.I get错误类型错误:glob接受1个位置参数,但只提供了3个位置参数和1个关键字参数,对于没有找到临时文件的已完成目录,我应该将进一步的处理放在哪里?在if块之后,我尝试了printd+,但在if块之后,我似乎完成了打印,并且我得到了一个什么都没有的列表,即使有许多目录未使用且没有临时文件。
    g = [glob.glob(os.path.join(d, '**', p) ...