我正在尝试创建一个脚本,它会自动将扫描的讲义从特定日期移动到文件夹中。
为此,我需要按照文件的上传日期(即它们的 mdate
)对文件进行排序。
我遇到的问题是脚本确实找到了文件并将它们放在 list
中,但是 os.path.mtime()
命令找不到那些相同的文件。
这是我的代码:
import os
p="someDir"
if os.path.isdir(p):
files = os.listdir(p)
print("Files found in folder:", files)
files.sort(key=os.path.getmtime)
这是我得到的错误:
Files found in folder: ['20180907.pdf', '20180831.pdf',
'20180905.pdf', '20180906.pdf']
Traceback (most recent call last):
File "/home/mats/Google Drive/Programmering/Python/Python
Projects/homework/homework.py", line 32, in <module>
files.sort(key=os.path.getmtime)
File "/usr/lib/python3.6/genericpath.py", line 55, in getmtime
return os.stat(filename).st_mtime
FileNotFoundError: [Errno 2] No such file or directory: '20180907.pdf'
最佳答案
您的变量文件包含:
['20180907.pdf', '20180831.pdf',
'20180905.pdf', '20180906.pdf']
这不是关于工作目录的绝对/相对路径。该路径还包括该文件夹!
2 解决方案:1 对包含路径名的列表进行排序,即:
from os.path import join
files = [join(p, elt) for elt in files]
或者您在循环中更改工作目录,即代替打印:
os.chdir(p)
关于python - 按时间排序列表中的文件,无法在列表中找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226857/