簡體   English   中英

在繼續使用Python之前,如何檢查文件是否存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM