为什么用pyinstaller打包后打不开_为什么Linux用绝对路径打包文件时会提示tar: 从成员名中删除开头的“/”...

当大家用tar打包文件时,通常会有2种方式来指定需要打包文件的目录位置,一个是采用相对路径,一个是采用绝对路径;当使用相对路径进行打包,结果一切正常;如果换成使用绝对路径来打包,却会出现以下提示信息:tar: 从成员名中删除开头的“/”,这是为何呢?

201855e38e267f0a9c0fc0626fb80848.png

首先,出现这种提示是正常的,无须担心,它只是linux系统对用户的一个善意的提醒,并不影响打包操作,如果不想看到这个提示信息,在执行打包命令时,带上选项P就可以了。那这提醒是一个什么用意呢?我们来分析一下:

下面是/3.12目录下的文件结构:

ed8adac2d2bf8b21020b6cc3bd8318ea.png

我们执行一个如下打包命令,这时系统就会给出一个提示:

2212811a3685518ecaa5b87a07af4159.png

通过ll我们可以看到包文件已经成功创建:

ceec39b4b07b1296548dc9068d2790d1.png

而且我们还可以查看包文件里面的内容:

88695e83dd83d091c58534d5fd9b0c18.png

这时,我们再通过命令来直接解包,我们会发现解包后的目录名称是3.12,整个的文件结构是3.12/a/a1/1.txt:

89d120ecf86437f727df06ef75cc92d5.png

查看3.12下面的文件结构,实际只有文件a/a1/1.txt,没有任何问题:

01864915e47a70c5876a9a0d73ef51b9.png

也就是说,当使用绝对路径进行打包时,系统会按照绝对路径来对被打包文件进行打包,解包时自然也是按照这个规则来进行;这样我们就可以理解了,如果当时打包时,系统不去掉打包文件前面的/的话,那它解包后的文件将会是以/3.12/a/a1/1.txt方式去覆盖,这种覆盖的方式会造成2中可能:1)直接把根目录覆盖了;2)如果解包文件存放到当前目录下,文件名是不允许以/开头的。综合以上,系统在打包时就去掉了/,这就是从成员名中删除开头的“/”的真正原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值