我想獲取最新創建的目錄。我跟着這個post。但是當我嘗試它時會出現錯誤。嘗試在python中獲取最新創建的目錄時出錯
這裏是我的目錄列表
ls backups
BACKUPSET_2016-01-14_11-26_.zip DIFF-2016-01-17_00-00 DIFF-2016-01-20_00-00
BACKUPSET_2016-01-14_11-28_.zip DIFF-2016-01-18_00-00 DIFF-2016-01-21_00-00
DIFF-2016-01-16_00-00 DIFF-2016-01-19_00-00 FULL-2016-01-14_14-11
我想獲得最新創建的文件以「DIFF」
開始這裏是我試過了。
def get_latest_directory():
all_dirs = [d for d in os.listdir('backups') if (os.path.isdir(d) and d.startswith('DIFF'))]
print sorted(all_dirs, key=lambda x: os.path.getctime(x), reverse=True)[0]
if __name__=="__main__":
get_latest_directory()
當我運行該腳本,我得到
./backup.py
Traceback (most recent call last):
File "./backup.py", line 33, in <module>
get_latest_directory()
File "./backup.py", line 19, in get_latest_directory
print sorted(all_dirs, key=lambda x: os.path.getctime(x), reverse=True)[0]
IndexError: list index out of range
我做了上述
def get_latest_directory():
all_dirs = [d for d in os.listdir('backups')]
print sorted(all_dirs, key=lambda x: os.path.getctime(x), reverse=True)[0]
在功能上的微小變化,現在我得到:
Traceback (most recent call last):
File "./backup.py", line 34, in <module>
get_latest_directory()
File "./backup.py", line 20, in get_latest_directory
print sorted(all_dirs, key=lambda x: os.path.getctime(x), reverse=True)[0]
File "./backup.py", line 20, in <lambda>
print sorted(all_dirs, key=lambda x: os.path.getctime(x), reverse=True)[0]
File "/usr/lib64/python2.7/genericpath.py", line 64, in getctime
return os.stat(filename).st_ctime
OSError: [Errno 2] No such file or directory: 'FULL-2016-01-14_14-11'
這確實因爲我直接看到這一點,所以沒有意義ory'FULL-2016-01-14_14-11'當我執行ls
命令。
我做錯了什麼。我無法弄清楚。
感謝
我的猜測是你需要完整的路徑名。 'listdir'沒有給出完整路徑 – SirParselot
你需要''.path.join',但我不知道你爲什麼不使用glob,因爲它也在鏈接問題中使用 –