3 回答
TA贡献1827条经验 获得超9个赞
您可以pathlib.Path.rglob
在此处使用递归获取所有 png:
作为列表理解:
from pathlib import Path
search_dir = "/path/to/search/dir"
# This creates a list of tuples with `number` and the resolved path
paths = [(p.name.split("-")[0], p.resolve()) for p in Path(search_dir).rglob("*.png")]
或者,您可以循环处理它们:
paths = []
for p in Path(search_dir).rglob("*.png"):
number, scansize, letter = p.name.split("-")
# more processing ...
paths.append([number, p.resolve()])
TA贡献1911条经验 获得超7个赞
结果来自
for root, dirs, files in os.walk(newpath):
是文件只包含没有目录路径的文件名。仅使用文件名意味着 python 默认使用您的项目文件夹作为这些文件名的目录。在您的情况下,文件位于新路径中。您可以使用 os.path.join 将目录路径添加到找到的文件名。
filepath = os.path.join(newpath, file)
如果您想在子目录中找到 png 文件,最简单的方法是使用 glob:
import glob
newpath = r'D:\Images'
file_paths = glob.glob(newpath + "/**/*.png", recursive=True)
for file_path in file_paths:
print(file_path)
TA贡献1784条经验 获得超8个赞
我最近刚刚写了一些你正在寻找的东西。
此代码依赖于您的文件是路径末尾的假设。不适合找目录之类的。
不需要嵌套循环。
DIR = "your/full/path/to/direcetory/containing/desired/files"
def get_file_path(name, template):
"""
@:param template: file's template (txt,html...)
@return: The path to the given file.
@rtype: str
"""
substring = f'{name}.{template}'
for path in os.listdir(DIR):
full_path = os.path.join(DIR, path)
if full_path.endswith(substring):
return full_path
添加回答
举报