通过mtime对列表中的文件进行排序,无法在列表中找到文件

时间:2018-09-07 17:03:09

标签: python python-3.x

我正在尝试创建一个脚本,该脚本将自动将扫描的讲义从特定日期移至文件夹。

为此,我需要按文件的上传日期(即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'

1 个答案:

答案 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)