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打印缺少的文件名。