按大小排序文件时出现 FileNotFoundError

FileNotFoundError when sorting files by size

我正在尝试创建一个图像文件名列表,按文件大小排序:

path = '/home/onur/Desktop/dataset/'

images = sorted(os.listdir(path), key = os.path.getsize)
print(images)

但是我收到这个错误:

Traceback (most recent call last):
  File "/home/onur/Desktop/image-downloader.py", line 98, in <module>
    images = sorted(os.listdir(path), key = os.path.getsize)
  File "/usr/lib/python3.9/genericpath.py", line 50, in getsize
    return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: 'image_535.jpg'

python 文件不在 /home/onur/Desktop/dataset/ 中。它只是在桌面上,所以我想知道这是否是错误的原因。如果是这样,我该如何解决?

你是对的。问题是 os.path.getsize 如果文件不存在会引发错误。因为您的 Python 脚本在 /home/onur/Desktop 中并且传递给 os.path.getsize 的文件名只是 image_535.jpg,所以 os.path.getsize 在您的桌面目录中查找该文件。由于文件不存在,os.path.getsize 引发错误。您可以 运行 这个来正确测试文件大小。

path = '/home/onur/Desktop/dataset/'

images = sorted(os.listdir(path), key=lambda f: os.path.getsize(os.path.join(path, f)))

print(images)