我尝试压缩文件,我使用了 https://thispointer.com/python-how-to-create-a-zip-archive-from-multiple-files-or-directory/
中的示例with ZipFile('sample2.zip', 'w') as zipObj2:
# Add multiple files to the zip
zipObj2.write('sample_file.csv')
sample2.zip
已创建,但它是空的。当然,csv
文件存在并且不为空。
编辑:我正在使用相对路径-
input_dir = "../data/example/"
with zipfile.ZipFile(os.path.join(input_dir, 'f.zip'), 'a') as zipObj2:
zipObj2.write(os.path.join(input_dir, 'f.tif'))
您尝试关闭 zip 文件来保存吗?
from zipfile import ZipFile
with ZipFile('sample2.zip', 'w') as zipObj2:
zipObj2.write('sample_file.csv')
zipObj2.close()
我对你的问题有点困惑,但如果我是正确的,听起来你正试图将多个 CSV 文件放在一个压缩文件中?如果是这样,这就是您正在寻找的:
#initiate files variable that contains the directory from which you wish to zip csv files
files=[f for f in os.listdir("./your_directory") if f.endswith('.csv')]
#initalize empty DataFrame
all_data = pd.DataFrame()
#iterate through the files variable and concatenate them to all_data
for file in files:
df = pd.read_csv('./your_directory' + file)
all_data = pd.concat([all_data, df])
然后调用新的 DataFrame(all_data) 来验证内容是否已传输。
此代码片段允许您仅压缩特定文件类型
import os import shutil from unittest.mock import patch
_os_path_isfile = os.path.isfile
def accept(path):
file_name, file_extension = os.path.splitext(path)
if file_extension not in [".py", ".ipynb"]:
return False
print("archiving %r" % path)
return _os_path_isfile(path)
with patch("os.path.isfile", side_effect=accept):
shutil.make_archive("archive_file_name", "zip", ".")