忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1781 | 回复: 3

tarfile模块的问题 [复制链接]

求职 : Linux运维
论坛徽章:
202
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2017-09-15 17:04 |显示全部楼层
执行下面代码老是报错

#!/usr/bin/env python
# -*- coding:utf-8 -*-


import os
import sys
import re
import shutil
import tarfile




def a():
    with tarfile.open('/tmp/a.tgz', 'w:gz') as tar:
        tar.add('/tmp/aa.py', arcname='aa.py')
        tar.add('/tmp/22.txt', arcname='22.txt')
        tar.close()
    return 'haha'


if __name__ == '__main__':
    a()

       
报错内容
        python b.py
Traceback (most recent call last):
  File "b.py", line 40, in <module>
    a()
  File "b.py", line 31, in a
    with tarfile.open('/tmp/a.tgz', 'w:gz') as tar:
AttributeError: 'TarFile' object has no attribute '__exit__'
请问我怎麽做才能避免报错,还有,生成了a.tgz之后,发现a.tgz是空的,python版本是2.6.6
操作系统是centos6.6


论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
发表于 2017-09-18 17:14 |显示全部楼层
本帖最后由 jeppeter 于 2017-09-18 17:15 编辑

回复 1# lyhabc

我测试过你的程序,是没有问题的。
我把你的程序修改成下面的,可以适应更多的情况
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-


  3. import os
  4. import sys
  5. import re
  6. import shutil
  7. import tarfile




  8. def a():
  9.     with tarfile.open(sys.argv[1], 'w:gz') as tar:
  10.         for curf in sys.argv[2:]:
  11.             tar.add(curf,os.path.basename(curf))
  12.         tar.close()
  13.     return 'haha'


  14. if __name__ == '__main__':
  15.     a()
复制代码



由输入的命令行决定行为

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2017-09-20 17:20 |显示全部楼层
这种问题什么好问的  
错误提示不是已经告诉你了? 错误提示也不看就来问

2.6的的tarfile没有上下文方法,自己继承封装下上下文方法就是

求职 : Linux运维
论坛徽章:
202
拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:092015小元宵徽章
日期:2015-03-06 15:58:182015年亚洲杯之约旦
日期:2015-04-05 20:08:292015年亚洲杯之澳大利亚
日期:2015-04-09 09:25:552015年亚洲杯之约旦
日期:2015-04-10 17:34:102015年亚洲杯之巴勒斯坦
日期:2015-04-10 17:35:342015年亚洲杯之日本
日期:2015-04-16 16:28:552015年亚洲杯纪念徽章
日期:2015-04-27 23:29:17操作系统版块每日发帖之星
日期:2015-06-06 22:20:00操作系统版块每日发帖之星
日期:2015-06-09 22:20:00
发表于 2017-09-21 10:16 |显示全部楼层
回复 3# lolizeppelin

谢谢提醒,已经解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP