使用zipfile来压缩文件的时候,发现一个问题,在写入压缩文件时,会带入文件的路径
代码如下:
import zipfile
z = zipfile.ZipFile('123.zip', 'w', zipfile.ZIP_DEFLATED)
z.write("D:\\PycharmProjects\\allen02\\1206\\123.txt")
z.close()
打开123.zip发现会带有文件夹路径(PycharmProjects\allen02\1206\):
不想带这个文件夹路径,上网搜了好多帖子,试验了很多方法都不行。
无奈之下打开zip.write源码看了下:
发现有一个arcname参数,默认是None,再看下面是在from_file方法中有定义,再打开from_file方法查看
发现这是一个类方法,在这里有arcname的解释,翻译过来就是:
arcname是它将在归档文件中使用的名称(默认情况下,它将与文件名相同,但是没有驱动器号,并且删除了前导路径分隔符)。
看到这里,这不就是我要的文件名吗,赶紧试试看,代码如下:
import zipfile
z = zipfile.ZipFile('123.zip', 'w', zipfile.ZIP_DEFLATED)
z.write(filename="D:\\PycharmProjects\\allen02\\1206\\123.txt", arcname="123.txt")
z.close()
再次查看zip文件:
问题解决,后续就可以将多个文件压缩后放到一个zip中,并且没有路径了。