Python 文件 IO 和 zipfile。尝试遍历文件夹中的所有文件,然后使用 Python 遍历相应文件中的文本

Posted

技术标签:

【中文标题】Python 文件 IO 和 zipfile。尝试遍历文件夹中的所有文件,然后使用 Python 遍历相应文件中的文本【英文标题】:Python file-IO and zipfile. Trying to loop through all the files in a folder and then loop through the texts in respective file using Python 【发布时间】:2015-04-02 16:54:51 【问题描述】:

尝试提取所有 zip 文件并为所有文件所在的文件夹提供相同的名称。 遍历文件夹中的所有文件,然后遍历这些文件中的行以写入不同的文本文件。 到目前为止,这是我的代码:

#!usr/bin/env python3
import glob
import os
import zipfile

zip_files = glob.glob('*.zip')
for zip_filename in zip_files:
    dir_name = os.path.splitext(zip_filename)[0]
    os.mkdir(dir_name)
    zip_handler = zipfile.ZipFile(zip_filename, "r")
    zip_handler.extractall(dir_name)

path = dir_name
fOut = open("Output.txt", "w")

for filename in os.listdir(path):
    for line in filename.read().splitlines():
        print(line)
        fOut.write(line + "\n")
fOut.close()

这是我遇到的错误:

for line in filename.read().splitlines():
AttributeError: 'str' object has no attribute 'read'

【问题讨论】:

filename 是一个字符串。而不是read()ing 字符串,您需要打开文件然后读取它。 【参考方案1】:

您需要打开文件并加入文件的路径,同样使用分割线然后在每行添加换行符有点多余:

path = dir_name
with open("Output.txt", "w") as fOut:    
    for filename in os.listdir(path):
        # join filename to path to avoid file not being found
        with open(os.path.join(path, filename)):
            for line in filename:
                fOut.write(line)

您应该始终使用with 打开您的文件,因为它会自动关闭它们。如果文件不大,您可以简单地fOut.write(f.read()) 并删除循环。

您还设置了path = dir_name,这意味着路径将设置为dir_name 在您的第一个循环中的最后一个值,这可能是也可能不是您想要的。您也可以使用iglob 来避免创建完整列表zip_files = glob.iglob('*.zip')

【讨论】:

你是上帝!非常感谢你。像魅力一样工作。 不用担心,只要确保dir_name 是您认为的那样。 问题是在此之前我对 python 的经验为零。我这样做是为了完成我对编程语言课程的调查。我只有一周的时间,我正在努力寻找帮助。 @AnjilDhamala 如果他们是上帝,而且它就像一个魅力,你为什么不接受这个答案? 一定忘记了。那时我对 *** 还比较陌生。完成!

以上是关于Python 文件 IO 和 zipfile。尝试遍历文件夹中的所有文件,然后使用 Python 遍历相应文件中的文本的主要内容,如果未能解决你的问题,请参考以下文章

zipfile 写入在 gcloud 中找不到文件

ZipFile (System.IO.Compression)、c# (WPF) 的字符提取问题

ZipFile.CreateFromDirectory 抛出 System.IO.IOException :该进程无法访问文件 X,因为它正在被另一个进程使用

使用 zipfile zlib python 和 mailgun 时,Mailgun 仅在 Python 脚本中发送部分 zip 文件

Python:BadZipFile:目录和标题中的文件名不同

python zipfile 文件压缩和文件