gpt4 book ai didi

python - 如何使用 os.listdir 打开子文件夹并查找路径

转载 作者:行者123 更新时间:2023-12-05 04:40:26 26 4
gpt4 key购买 nike

我想读取 os.listdir 名为 digit_test 的子文件夹中的所有图像:

file_pathname = './digit_test'
for filename in os.listdir(file_pathname):
print(filename)
img = cv2.imread(file_pathname+'/'+filename)

但是,它显示发生异常:FileNotFoundError

[WinError 3] The system cannot find the specified path.: './digit_test'
File "D:\Python_ex\lenet_5\lenet_5_isvalid.py", line 15, in <module>
for filename in os.listdir(file_pathname):

这样的文件结构,

lenet_5>-my_test.py
-digit_test-> 0.PNG

我想知道是不是相对路径,因为我用绝对路径的时候就可以了。

file_pathname = r'D:\Python_ex\lenet_5\digit_test' 

此外,

file_pathname = r'.\lenet_5\digit_test'

现在也可以工作了。

其实就是这样的问题,主文件夹包含一个python文件和二级文件夹,二级文件夹包含一些imgs,现在我只想读取这个python文件中的这些imgs。但是,如果我使用绝对路径,当我更改文件夹名称时它仍然无法工作。

最佳答案

您确实需要添加完整的错误日志以获得更好的帮助,但我的猜测是,您在脚本路径之外执行了脚本。

简而言之,您可能首先执行了脚本 INSIDE lenet_5,然后在接下来的运行中您执行了 os.chdir 或执行了脚本 < em>在外面,看似Python_ex

在终端中,您当前在终端中的目录成为您运行的任何脚本的当前工作目录。

>>> import os
>>> os.listdir("./exported")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다: './exported'

[WinError 3] 지정된 경로를 찾을 수 없습니다: './exported'

# current working directory is not where I intended
>>> os.getcwd()
'C:\\Users\\jupiterbjy'

# now change directory to where I want to be

>>> os.chdir("E:/Media/Works/CSP")
>>> os.listdir("./exported")
['banners', 'bg2.png', 'box.png', ...

>>> os.getcwd()
'E:\\Media\\Works\\CSP'

旧答案

为什么不尝试更好的替代方案 pathlib.Path

如果绝对需要 os.listdir,您可以将其转换为字符串并将字符串化路径提供给 os.listdir。

>>> import pathlib
>>> root = pathlib.Path("./")
>>> root
WindowsPath('.')

>>> root.absolute().as_posix()
'E:/Media/Works/CSP/Exported'

>>> root.joinpath("banners").absolute()
WindowsPath('E:/Media/Works/CSP/Exported/banners')

>>> def images_gen():
... for path in root.iterdir():
... if path.suffix in (".png", ".jpg"):
... yield path

>>> import pprint
>>> images = list(images_gen())
>>> pprint.pprint(images)
[WindowsPath('bg2.png'),
WindowsPath('box.png'),
...

>>> data = images[0].read_bytes()
>>> len(data)
81245


# pathlib.Path features

>>> pprint.pprint([method for method in dir(root) if not method.startswith("_")])
['absolute',
'anchor',
'as_posix',
'as_uri',
'chmod',
'cwd',
'drive',
'exists',
'expanduser',
'glob',
'group',
'hardlink_to',
'home',
'is_absolute',
'is_block_device',
'is_char_device',
'is_dir',
'is_fifo',
'is_file',
'is_mount',
'is_relative_to',
'is_reserved',
'is_socket',
'is_symlink',
'iterdir',
'joinpath',
'lchmod',
'link_to',
'lstat',
'match',
'mkdir',
'name',
'open',
'owner',
'parent',
'parents',
'parts',
'read_bytes',
'read_text',
'readlink',
'relative_to',
'rename',
'replace',
'resolve',
'rglob',
'rmdir',
'root',
'samefile',
'stat',
'stem',
'suffix',
'suffixes',
'symlink_to',
'touch',
'unlink',
'with_name',
'with_stem',
'with_suffix',
'write_bytes',
'write_text']

关于python - 如何使用 os.listdir 打开子文件夹并查找路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70274797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com