Python OSError:[错误1]不允许操作shutil.move
因此,我尝试使用python将一个文件从引导驱动器复制到外部驱动器。因此,os.rename不是一个选项(我会得到一个跨设备错误)。我决定尝试使用shutil.move,但随后抛出了一个OSError 1,声称在其内部调用os.chmod时不允许该操作。有趣的是,它移动到的目录具有777权限。电话如下:Python OSError:[错误1]不允许操作shutil.move,python,linux,shutil,Python,Linux,Shutil,因此,我尝试使用python将一个文件从引导驱动器复制到外部驱动器。因此,os.rename不是一个选项(我会得到一个跨设备错误)。我决定尝试使用shutil.move,但随后抛出了一个OSError 1,声称在其内部调用os.chmod时不允许该操作。有趣的是,它移动到的目录具有777权限。电话如下: if hasattr(f.file,'name'): move(f.file.name,path) 全部交易如下所示 [08/Sep/2014:00:4
if hasattr(f.file,'name'):
move(f.file.name,path)
全部交易如下所示
[08/Sep/2014:00:49:36] HTTP Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 670
, in respond
response.body = self.handler()
File "/usr/local/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", line 2
17, in __call__
self.body = self.oldhandler(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py", line 61
, in __call__
return self.callable(*self.args, **self.kwargs)
File "/home/pi/btsync/BitTorrentSyncWeb/py/main.py", line 129, in upload
move(f.file.name,path)
File "/usr/lib/python2.7/shutil.py", line 301, in move
copy2(src, real_dst)
File "/usr/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
File "/usr/lib/python2.7/shutil.py", line 100, in copystat
os.chmod(dst, mode)
OSError: [Errno 1] Operation not permitted: '/mnt/bakery/Dump/ck.gif'
权限如下所示
$ls -l /mnt/bakery/
drwxrwxrwx 4 root root 32768 Sep 8 01:30 Dump
$ls -l /mnt/bakery/Dump |grep ck.gif
-rwxrwxrwx 1 root root 1017711 Sep 8 00:49 ck.gif
只需确保您的驱动器具有linux可以修改的格式。FAT32不是其中之一。您是在问如何在不更改权限的情况下移动它,还是在更改权限的情况下移动它?我只是问为什么我不能移动此文件,以及如何修复它。我应该可以移动它。你试过在shell中执行这些命令吗?如果您可以在这里重现这一点,那么这对于超级用户来说是一个完美的问题(但对于堆栈溢出来说不是一个好问题)。如果
chmod
在shell中工作,但在shutil.move
中不工作,那么您有一个很好的SO问题……但是首先调用Python中的各个方法,看看是否可以获得更多信息。但我敢打赌是前者,你问错地方了,明白了。是的,它在壳里也不起作用。呸。我没有意识到这就是问题所在。我将尝试一些解决方法,然后在SU上发布。谢谢编辑:做了一些调查,发现问题是我的硬盘格式为FAT32,因此无法使用chmod。谢谢你的帮助。