如何阻止Python的gzip创建子目录?

时间:2013-03-14 15:54:17

标签: python gzip

这可能是我的一个简单错误,但我无法弄清楚如何在不创建大量子目录的情况下压缩文件。

以下是我的表现:

f_in = open(r'C:\cygwin\home\User\Stuff\MoreStuff\file.csv', 'r')
gzip_file_name = r'C:\cygwin\home\User\Stuff\MoreStuff\file.csv.gz'
f_out = gzip.open(gzip_file_name, 'w')
f_out.writelines(f_in)
f_out.close()

问题是,当我解压缩.gz文件时,我不仅仅获取csv文件,而是获得最终以csv文件结尾的一长串目录。 例如cygwin\home\User\Stuff\MoreStuff\file.csv

我的解决方法看起来有点像这样:

current_dir = os.getcwd()
os.chdir(r'C:\cygwin\home\User\Stuff\MoreStuff') 
f_in = open('file.csv', 'r')
gzip_file_name = 'file.csv.gz'
f_out = gzip.open(gzip_file_name, 'w')
f_out.writelines(f_in)
f_out.close()
os.chdir(current_dir)

我不知道继续更改当前目录是否是一个好主意(特别是因为我可能有多个要压缩的文件)。

那么,有没有办法不制作这些子目录? (我在官方docs中找不到任何讨论过这个问题。)

注意:我使用的是Windows,但我确实需要它是可移植的。我也在使用Python 2.4。

感谢您的时间。

编辑:当我在WinRar或甚至7zip中打开压缩文件时,我看到了子目录。如果我使用chdir,那么我不再看到这些子目录。

1 个答案:

答案 0 :(得分:1)

crayzeewulf提供的上一个问题的link工作正常。

这可能只是旧版Python发行版中的一个问题。根据{{​​3}}(也由crazyzeewulf提供),这在新版本中有所改变,因此您可能无法在Python 2.7中重现此问题。

感谢大家的帮助。