python - 按时间排序列表中的文件,无法在列表中找到文件

标签 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'

最佳答案

您的变量文件包含:

['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/

相关文章:

python - 我似乎不明白为什么我不能转换为 int

python-3.x - 无法将 scipy 安装到 Raspberry pi 4 (raspbian)

python - Pandas 从长到宽

python - python3 中的可选 yield 或 return。如何?

python - 反转多个集合的字典

Python 反转元组的某些部分

python - 在 C 中模拟 Python `random.random()` 功能

java - 为什么 java/javascript/python 强制在方法名称后使用 (),即使它不带参数?

python - 比较两个大文件并合并匹配信息

python:需要帮助以正确的方式实现 strptime()