2012-10-03 66 views
2

我想要識別目錄中最新和第二個最新文件。這是我打算用代碼:試圖識別目錄中的最新和第二個最新文件

CONFIGS = "/Users/root/dev/config-files/" 
allConfigs = sorted(os.listdir(CONFIGS), key=os.path.getctime) 
t1 = "%s/%s" % (CONFIGS, allConfigs[-1]) 
t2 = "%s/%s" % (CONFIGS, allConfigs[-2]) 

我遇到這個錯誤,我想不通爲什麼:

MBA:dev root$ python 
Python 2.7.3 (default, Apr 19 2012, 00:55:09) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> CONFIGS = "/Users/root/dev/config-files/" 
>>> allConfigs = sorted(os.listdir(CONFIGS), key=os.path.getctime) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/genericpath.py", line 64, in getctime 
    return os.stat(filename).st_ctime 
OSError: [Errno 2] No such file or directory: 'newest.txt' 
>>> 

任何人有什麼想法?

回答

7

os.listdir回報相對的名字,所以你必須使用os.path.join,使他們絕對:

allConfigs = sorted(os.listdir(CONFIGS), 
    key=lambda p: os.path.getctime(os.path.join(CONFIGS, p)) 
+0

我沒想到這個的。 (現在看起來很明顯)。謝謝你,Martijn! – Ethan

1

我認爲它缺少右括號:

allConfigs = sorted(os.listdir(CONFIGS), 
    key=lambda p: os.path.getctime(os.path.join(CONFIGS, p))) 
相關問題