原文链接:http://www.juzicode.com/python-error-tarfile-oserror-bad-operation-for-mode-r
错误提示:
tarfile add()方法追加文件时提示OSError: bad operation for mode ‘r’
#juzicode.com/vx:桔子code
import tarfile
zf = tarfile.open('test.tar',mode='r')
zf.add('lena.jpg')
zf.list()
zf.close()
==========运行结果:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-10-0f6aa276b197> in <module>
2 import tarfile
3 zf = tarfile.open('test.tar',mode='r')
----> 4 zf.add('lena.jpg')
5 zf.list()
6 zf.close()
D:\Python\Python38\lib\tarfile.py in add(self, name, arcname, recursive, filter)
1936 excluded from the archive.
1937 """
-> 1938 self._check("awx")
1939
1940 if arcname is None:
D:\Python\Python38\lib\tarfile.py in _check(self, mode)
2382 raise OSError("%s is closed" % self.__class__.__name__)
2383 if mode is not None and self.mode not in mode:
-> 2384 raise OSError("bad operation for mode %r" % self.mode)
2385
2386 def _find_link_target(self, tarinfo):
OSError: bad operation for mode 'r'
错误原因:
1、tarfile.open()方法创建文件实例时,mode=’r’,用的是读方式打开文档,而add()方法会将新增一个文件到压缩文档中,需要以a模式打开文件。
解决方法:
1、 tarfile.open()方法创建文件实例时,mode=’a’:
#juzicode.com/vx:桔子code
import tarfile
zf = tarfile.open('test.tar',mode='a')
zf.add('lena.jpg')
zf.list()
zf.close()
==========运行结果:
?rw-rw-rw- 0/0 916 2019-07-18 00:03:23 opencv_text.log
-rw-rw-rw- 0/0 91814 2018-02-23 00:38:32 lena.jpg
扩展内容:
如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。