我正在尝试创建一个脚本,该脚本将自动将扫描的讲义从特定日期移至文件夹。
为此,我需要按文件的上传日期(即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'
答案 0 :(得分:1)
您的变量文件包含:
['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)