Python错误集锦:tarfile add()方法追加文件时提示OSError: bad operation for mode ‘r’

原文链接: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 

扩展内容:

  1. OpenCV-Python教程


如果本文还没有完全解决你的疑惑,你也可以在微信公众号“桔子code”后台给我留言,欢迎一起探讨交流。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注