我會非常感謝為一個沮喪和困惑的 Python 初學者提供一些幫助。
我正在嘗試創建一個腳本,該腳本在包含多個子目錄和不同檔案型別的 Windows 目錄中搜索檔案內容中的特定單個字串(名稱),如果找到,則將檔案名列印為串列。在 100 個子目錄中大約有 2000 個檔案,我要搜索的所有檔案不一定具有相同的擴展名 - 但本質上都是 ASCII 檔案。
我一直在嘗試這樣做很多天,但我就是無法弄清楚。
到目前為止,我已經嘗試使用 glob recursive 結合讀取檔案,但我非常困惑。我可以成功列印所有子目錄中所有檔案的串列,但不知道從哪里開始。
import glob
files = []
files = glob.glob('C:\TEMP' '/**', recursive=True)
print(files)
誰能幫幫我嗎?我是 72 歲的科學家,試圖提高我的技能并“將無聊的東西自動化”,但目前我只是失去了意志。
非常感謝您提前感謝這個社區。
uj5u.com熱心網友回復:
很高興有你在這里!
到目前為止你所做的就是找到了所有的檔案路徑,現在最簡單的方法是遍歷每個檔案,將它們一一讀入記憶體,看看你要找的名字是否在那里。
import glob
files = glob.glob('C:\TEMP' '/**', recursive=True)
target_string = 'John Smit'
# itereate over files
for file in files:
try:
# open file for reading
with open(file, 'r') as f:
# read the contents
contents = f.read()
# check if contents have your target string
if target_string in conents:
print(file)
except:
pass
這將在每次找到名稱時列印檔案路徑。
另請注意,我已從您的代碼中洗掉了第二行,因為它是多余的,您無論如何都要在第 3 行中啟動串列。
希望能幫助到你!
uj5u.com熱心網友回復:
你可以這樣做,雖然我認為必須有更好的方法
當您找到目錄中的所有檔案時,您會遍歷它們并檢查它們是否包含該特定字串。
for file in files:
if(os.path.isfile(file)):
with open(file,'r') as f:
if('search_string' in f.read()):
print(file)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350344.html
