Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Os.walk - Fatal编程技术网

Python 如何指定不包含';不存在于一条路径中?

Python 如何指定不包含';不存在于一条路径中?,python,python-3.x,os.walk,Python,Python 3.x,Os.walk,我已使用此选项在给定路径中查找文件: path = "C:\\Users\\derpderp\\" name = "derp.xlsx" for root, dirs, files in os.walk(path): if name in files: print(name) 但是我们如何做相反的事情呢?因此,如果文件不存在:请指定该文件 如果我写: if name not in files: print(name) 它将迭代不存在于每个文件夹/文件等中的文

我已使用此选项在给定路径中查找文件:

path = "C:\\Users\\derpderp\\"
name = "derp.xlsx"

for root, dirs, files in os.walk(path):
    if name in files:
        print(name)
但是我们如何做相反的事情呢?因此,如果文件不存在:请指定该文件

如果我写:

if name not in files:
    print(name)
它将迭代不存在于每个文件夹/文件等中的文件名。

您可以使用pathlib的函数并尝试/除了
FileNotFound
错误

导入路径库
path=“C:\\Users\\derpderp\\”
name=“derp.xlsx”
尝试:
file=pathlib.Path(路径+名称)
file.resolve(strict=True)
除FileNotFoundError为e外:
印刷品(名称)

尽管使用@Ben Corcoran answer中所示的
pathlib
模块可能是最好(也是最快)的方法,但这里有一个使用内置函数的替代方法:

import os

def any_exists(filename, path):
    def gen_files(path):
        for root, dirs, files in os.walk(path):
            if filename in files:
                return filename
        return ()

    return any(gen_files(path))


path = "C:\\Users\\martineau"
name = "derp.xlsx"

if not any_exists(name, path):
    print(f'No file named {name} exists.')
else:
    print(f'A file named {name} exists.')

这回答了你的问题吗?我不明白你在这里想干什么。这感觉像是一个XY问题(os.walk是否真的是您应该使用的工具?)。请用文字说明您试图实现的目标,您的输入和输出是什么?我有一个excel文件,其中有一个文件名列表,我想将这些文件名与目录和子目录进行比较。如果列表中的某个文件在任何目录中都不存在,我想打印该文件名。或者只打印
os.path.exists
这是否与我以前遇到的问题完全相同?如果我用subdirs遍历一个dir,它将为每个dir打印缺少的文件名。