[英]error when trying to get the newest created directory in 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'
這沒有任何意義,因為我執行ls
命令時會看到此目錄“ FULL-2016-01-14_14-11”。
我做錯了。 我不知道。
謝謝
您需要完整的路徑名,因此只需將其添加到列表理解中的d中即可。
def get_latest_directory():
path_to_backups = 'path/to/backups/'
all_dirs = [path_to_backsups + d for d in os.listdir(path_to_backups) if (os.path.isdir(path_to_backups + 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()
正如SirParselot所述,您需要完整路徑,而os.listdir()
僅提供相對路徑。 要解決此問題,請使用os.path.abspath()
,它將相對路徑映射到絕對路徑。
[os.path.abspath(d) for d in os.listdir('backups') if (...)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.