Python 目录中的最新文件
Python newest file in a directory
我正在编写一个脚本,试图列出以 .xls 结尾的最新文件。应该很容易,但我收到了一些错误。
代码:
for file in os.listdir('E:\Downloads'):
if file.endswith(".xls"):
print "",file
newest = max(file , key = os.path.getctime)
print "Recently modified Docs",newest
错误:
Traceback (most recent call last):
File "C:\Python27\sele.py", line 49, in <module>
newest = max(file , key = os.path.getctime)
File "C:\Python27\lib\genericpath.py", line 72, in getctime
return os.stat(filename).st_ctime
WindowsError: [Error 2] The system cannot find the file specified: 'u'
newest = max(file , key = os.path.getctime)
这是迭代文件名中的字符而不是文件列表中的字符。
您正在做类似 max("usdfdsf.xls", key = os.path.getctime)
而不是 max(["usdfdsf.xls", ...], key = os.path.getctime)
的事情
你可能想要这样的东西
files = [x for x in os.listdir('E:\Downloads') if x.endswith(".xls")]
newest = max(files , key = os.path.getctime)
print "Recently modified Docs",newest
您可能还想改进脚本,以便在您不在下载目录中时它也能正常工作:
files = [os.path.join('E:\Downloads', x) for x in os.listdir('E:\Downloads') if x.endswith(".xls")]
您可以使用 glob
获取 xls
个文件的列表。
import os
import glob
files = glob.glob('E:\Downloads\*.xls')
print("Recently modified Docs", max(files , key=os.path.getctime))
如果您更喜欢最新的 pathlib 解决方案,这里是:
from pathlib import Path
XLSX_DIR = Path('../../somedir/')
XLSX_PATTERN = r'someprefix*.xlsx'
latest_file = max(XLSX_DIR.glob(XLSX_PATTERN), key=lambda f: f.stat().st_ctime)
我正在编写一个脚本,试图列出以 .xls 结尾的最新文件。应该很容易,但我收到了一些错误。
代码:
for file in os.listdir('E:\Downloads'):
if file.endswith(".xls"):
print "",file
newest = max(file , key = os.path.getctime)
print "Recently modified Docs",newest
错误:
Traceback (most recent call last):
File "C:\Python27\sele.py", line 49, in <module>
newest = max(file , key = os.path.getctime)
File "C:\Python27\lib\genericpath.py", line 72, in getctime
return os.stat(filename).st_ctime
WindowsError: [Error 2] The system cannot find the file specified: 'u'
newest = max(file , key = os.path.getctime)
这是迭代文件名中的字符而不是文件列表中的字符。
您正在做类似 max("usdfdsf.xls", key = os.path.getctime)
而不是 max(["usdfdsf.xls", ...], key = os.path.getctime)
你可能想要这样的东西
files = [x for x in os.listdir('E:\Downloads') if x.endswith(".xls")]
newest = max(files , key = os.path.getctime)
print "Recently modified Docs",newest
您可能还想改进脚本,以便在您不在下载目录中时它也能正常工作:
files = [os.path.join('E:\Downloads', x) for x in os.listdir('E:\Downloads') if x.endswith(".xls")]
您可以使用 glob
获取 xls
个文件的列表。
import os
import glob
files = glob.glob('E:\Downloads\*.xls')
print("Recently modified Docs", max(files , key=os.path.getctime))
如果您更喜欢最新的 pathlib 解决方案,这里是:
from pathlib import Path
XLSX_DIR = Path('../../somedir/')
XLSX_PATTERN = r'someprefix*.xlsx'
latest_file = max(XLSX_DIR.glob(XLSX_PATTERN), key=lambda f: f.stat().st_ctime)