Python:在文件夹中单独压缩所有文件

时间:2015-08-11 20:52:11

标签: python json csv zip

我一直试图找出答案,但没有具体针对我的情况。我是编程新手。 我在一个文件夹中有20-30个.csv文件。 我想遍历所有文件,并将每个csv文件压缩成.zip文件(不同的文件夹)

C:\users\xyz\Source\NumberOne.csv
C:\users\xyz\Source\NumberTwo.csv
C:\users\xyz\Source\NumberThree.csv


C:\users\xyz\Dest\NumberOne.zip
C:\users\xyz\Dest\NumberTwo.zip
C:\users\xyz\Dest\NumberThree.zip

我尝试过来自互联网的不同代码功能,但没有任何内容适用于单个文件。我拥有的工作代码,将所有文件压缩到1个zip文件夹中。

请帮助

2 个答案:

答案 0 :(得分:1)

这应该有效。您需要在运行它时传入源目录和目标目录(或修改代码)。

import os
import sys
import zipfile


def csv_files(source_dir):
    for filename in os.listdir(source_dir):
        if filename.endswith('.csv'):
            yield filename


source_dir = sys.argv[1]  # r'C:\users\xyz\Source\'
dest_dir = sys.argv[2]  # r'C:\users\xyz\Dest\'

os.chdir(dest_dir)  # To work around zipfile limitations

for csv_filename in csv_files(source_dir):
    file_root = os.path.splitext(csv_filename)[0]
    zip_file_name = file_root + '.zip'
    zip_file_path = os.path.join(dest_dir, zip_file_name)
    with zipfile.ZipFile(zip_file_path, mode='w') as zf:
        zf.write(csv_filename)

答案 1 :(得分:0)

要压缩文件,您可以使用:

import commands

cmd = 'zip -j ' + zipfile + ' ' + file 
commands.getstatusoutput(cmd)