簡體   English   中英

Python在帶有子目錄的目錄中搜索文本文件

[英]Python Searching text files in directory with subdirectories

我正在嘗試為自己創建一個小項目,但我陷入了困境。 我有一個帶子文件夾的文件夾,每個子文件夾都保存一個名為QWR.txt的文本文件。 因此,我想讀取所有文件並將文件中的文本存儲在一個文件中。

這是我的代碼:

import glob
for filename in glob.iglob('files/**/QWR.txt', recursive=True):
   with open(filename, 'r') as file:
      s = file.read()
   with open('output.txt', "wb") as file:
      file.write(s)

一開始它可以工作,但是在20多個文件之后,它卡住了,並給我一個錯誤:

return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8a in position 1396: character maps to <undefined>

您的縮進是錯誤的。 好,有兩個問題:

  • 您應該使用二進制模式來讀寫文件。 您將避免所有Python 2/3兼容。 問題,CR添加/刪除和編碼錯誤
  • 在循環之前打開輸出,否則僅將最后一個文件寫入其中(或使用附加模式)

像這樣:

import glob
with open('output.txt', "wb") as file:
   for filename in glob.iglob('files/**/QWR.txt', recursive=True):
      with open(filename, 'rb') as fr:
         fw.write(fr.read())

如果輸入文件很大,並且您無法通過全局讀取它們來負擔內存,那么fw.write(fr.read())一個不錯的選擇是:

shutil.copyfileobj(fr,fw)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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