Итак, я пытаюсь скопировать файл с моего загрузочного диска на внешний с помощью python. Из-за этого os.rename не вариант (я бы получил ошибку кросс-устройства). Я решил попробовать использовать shutdown.move, но затем это выдает OSError 1, утверждая, что операция не разрешена при внутреннем вызове os.chmod. Интересно то, что каталог, в который он перемещается, имеет права 777. Вызов выглядит следующим образом:
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
chmod
работает в оболочке, но не вshutil.move
, то у вас есть хороший вопрос SO… но сначала вызовите отдельные методы в Python, чтобы посмотреть, сможете ли вы получить больше информации. Но я готов поспорить, что это первое, и вы спрашиваете не в том месте. - person abarnert   schedule 08.09.2014