如何用python中的shutil.make_压缩文件?

2024-06-02 04:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用shutil.make_archive命令压缩一个文本文件。我使用以下命令:

shutil.make_archive('gzipped'+fname, 'gztar', os.path.join(os.getcwd(), fname))

OSError: [Errno 20] Not a directory: '/home/user/file.txt'

我尝试了几种变体,但它一直试图压缩整个文件夹。如何正确操作?


Tags: path命令makeosnotfnamejoinarchive
3条回答

试试这个并检查shutil

将文件复制到目录。

cd目录

shutil.make_archive('gzipped', 'gztar', os.getcwd())

shutil无法从一个文件创建存档。您可以使用tarfile,而不是:

tar = tarfile.open(fname + ".tar.gz", 'w:qz')
os.chdir('/home/user')
tar.add("file.txt")
tar.close()

或者

tar = tarfile.open(fname + ".tar.gz", 'w:qz')
tar.addfile(tarfile.TarInfo("/home/user/file.txt"), "/home/user/file.txt")
tar.close()

实际上^{}可以将一个文件存档!只需将目标目录的路径传递为root_dir,将目标文件名传递为base_dir

试试这个:

import shutil

file_to_zip = 'test.txt'            # file to zip
target_path = 'C:\\test_yard\\'     # dir, where file is

try:
    shutil.make_archive(target_path + 'archive', 'zip', target_path, file_to_zip)
except OSError:
    pass

相关问题 更多 >