我一直在关注本教程http://code.activestate.com/recipes/576804-find-the-oldest-or-yougest-of-a-list-of-files/,将文件列表排序到创建日期。 但是,当我使用以下代码运行脚本时:
import os
path = 'pages/'
files = sorted(os.listdir(path), key=os.path.getctime)
input(files)
...我收到此错误:
Traceback (most recent call last):
File "C:\ilmiont_server\blog\homepage.py", line 17, in <module>
files = sorted(os.listdir(path), key=os.path.getctime)
File "C:\Python33\lib\genericpath.py", line 64, in getctime
return os.stat(filename).st_ctime
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'rsr.txt'
'rsr.txt'是我搜索的'pages'目录中唯一的文件。奇怪的是它与脚本在同一目录中工作,如果'pages'目录为空。对于上下文,我想要排序的'pages'文件夹比脚本所在的文件夹低一级。请帮我弄清楚出了什么问题!
提前致谢,Ilmiont。
答案 0 :(得分:4)
您需要使用文件名加入路径,因为os.listdir()
会为您提供文件名,os.path.getctime()
需要完整路径:
paths = [os.path.join(path, fname) for fname in os.listdir(path)]
files = sorted(paths, key=os.path.getctime)
答案 1 :(得分:4)
os.path.getctime
无法找到os.listdir
返回的文件,因为os.listdir
仅返回其名称,而不是其路径。您需要提供os.path.getctime
文件的路径。
以下内容适用于您的具体情况:
import os
path = 'pages/'
files = sorted(os.listdir(path), key=lambda x: os.path.getctime(path+x))
input(files)
但是,使用os.path.join
创建文件路径通常更安全:
import os
path = 'pages/'
files = sorted(os.listdir(path), key=lambda x: os.path.getctime(os.path.join(path, x)))
input(files)