如何在Python中只压缩特定类型的文件?

11 浏览
0 Comments

如何在Python中只压缩特定类型的文件?

假设我在一个文件夹中有以下文件:

File1.txt
File2.py
File3.txt

我想创建一个ZIP压缩文件,但只包括.txt文件。我可以使用一个for循环来遍历该文件夹的文件,如下所示:

for folder, subfolder, files in os.walk(path):

此时,我不确定如何有效地筛选出不是.txt文件的内容。对于这个例子,我首先想要遍历存储文件的目录,并做如下操作:

for folder, subfolder, files in os.walk(path):
    for i in files:
        if i == 'File1.txt' OR i == 'File3.txt':
            myZip.write(i)

我认为这样会起作用,因为这些是文件夹中唯一的文件,但如果文件夹中有更多文件,它将无效。有没有更好的方法只将特定类型的文件写入ZIP压缩文件?

0
0 Comments

在Python中,我们可以使用os.walk()函数来遍历指定路径下的文件和文件夹。然后,我们可以使用endswith()函数来检查文件名是否以特定的扩展名结尾。如果文件名以.txt结尾,我们可以使用myZip.write()函数将文件添加到ZIP压缩文件中。

以下是解决这个问题的代码示例:

import os
import zipfile
def zip_files_with_extension(path, extension):
    with zipfile.ZipFile('files.zip', 'w') as myZip:
        for folder, subfolder, files in os.walk(path):
            for file in files:
                if file.endswith(extension):
                    myZip.write(os.path.join(folder, file))
# 示例调用
zip_files_with_extension('/path/to/directory', '.txt')

这段代码将遍历指定路径下的所有文件和文件夹。如果文件名以.txt结尾,它将被添加到名为files.zip的ZIP压缩文件中。

这段代码解决了“如何在Python中只压缩特定类型的文件”的问题。

0
0 Comments

问题出现的原因是:用户想要在Python中仅压缩特定类型的文件,但不知道如何实现。

解决方法是使用pathlib库来实现递归的文件匹配,并将匹配到的文件写入到压缩文件中。以下是解决方法的示例代码:

from pathlib import Path
for f in Path(path).glob('**/*.txt'):
    myZip.write(f)

0