如何将单个文件压缩为tar.gz?压缩后文件路径不符问题求助
解决tar压缩时保留文件路径而非仅文件名的问题
你遇到的问题是因为tar默认会保留文件的相对路径,要让压缩包内只保留myfile.bin文件名,有两种简单的解决方法:
方法一:使用-C切换工作目录
通过-C参数让tar先切换到目标文件所在的目录,再打包该文件,这样就不会带上路径:
subprocess.call(['tar', '-zcvf', '/path/to/destination/myfile.tar.gz', '-C', './path/to/file/', 'myfile.bin'])
-C ./path/to/file/会让tar的工作目录切换到文件所在路径,之后指定的myfile.bin就是该目录下的文件,打包后就只会保留文件名。
方法二:使用--transform重命名文件
通过sed风格的替换规则,直接去掉文件的路径部分:
subprocess.call(['tar', '-zcvf', '/path/to/destination/myfile.tar.gz', '--transform', 's|.*/||', './path/to/file/myfile.bin'])
--transform 's|.*/||'表示将文件名中最后一个/之前的所有内容替换为空,只保留最后的文件名。
内容的提问来源于stack exchange,提问作者Exorcismus
相关产品推荐
相关产品推荐

