繁体   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