[英]How can I check to see if a file exists before proceeding using Python
我有一些代碼可以在目錄中找到最新文件,並在文件名后附加時間戳。 只要目錄中有要重命名的文件,它就可以很好地工作。 如果沒有,我會得到:
“ ValueError:max()arg為空序列”
這是我的代碼:
import os
import glob
import datetime
now = datetime.datetime.now()
append = now.strftime("%H%M%S")
newest = max(glob.iglob('1234_fileName*.LOG'), key=os.path.getmtime)
newfile = (append+"_"+newest)
os.rename(newest, newfile)
對於簡化代碼的任何建議,以及解釋如何僅在檢測到“ 1234_fileName * .LOG”(請注意通配符)文件時運行,我們將不勝感激。
我需要該程序做的是定期運行(我可以使用任務計划程序)並檢查是否有新文件。 如果有新文件,請在其名稱后附加小時,分鍾和秒。
謝謝!
你可以使用glob.glob()
返回一個列表,而不是glob.iglob()
返回一個迭代器:
files = glob.glob('1234_fileName*.LOG')
if files:
newest = max(files, key=os.path.getmtime)
newfile = append + "_" + newest
os.rename(newest, newfile)
glob()
和iglob()
都在iglob()
使用os.listdir()
,因此單個目錄沒有區別。
max()抱怨您要查詢0個項目中的最大項目,並引發ValueError。 您必須抓住它。 這將繼續引發任何可能發生的IOErrors:
import os, glob, datetime
try:
app = datetime.datetime.now().strftime("%H%M%S")
newest = max(glob.iglob("1234_filename*.LOG"), key=os.path.getmtime)
newfile = (app + "_" + newest)
os.rename(newest, newfile)
except ValueError:
pass
os.access
允許您在操作之前檢查訪問權限。 鏈接下方就是一個例子。
另外,也可以只在try
..內執行操作, except IOError
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.