繁体   English   中英

带有python的文件传输

[英]File Transfer w/ python

我正在尝试制作一个程序,该程序将:复制并粘贴目录并将其放置,并将其内容移动到新位置。 我认为我的代码不适合此操作,我认为将文件移动到完全不同的位置很简单

import os
import shutil
login = os.getlogin()

SOURCE_FILE_DEKSTOP =  '/Users/%s/Desktop' % (login)
DST_FILE_WD = 'Users/%s/WorkDocs' % (login)

shutil.move(SOURCE_FILE_DEKSTOP, DST_FILE_WD)

我也收到这个错误

Traceback (most recent call last):
   File "/Users/gomcrai/pythings/fileTransfer.py", line 8, in <module>
    shutil.move(SOURCE_FILE_DEKSTOP, DST_FILE_WD)
   File "/Library/Frameworks/Python.framework/Versions/2.7/lib    /python2.7/shutil.py", line 300, in move
rmtree(src)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 256, in rmtree
    onerror(os.rmdir, path, sys.exc_info())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 254, in rmtree
os.rmdir(path)
OSError: [Errno 13] Permission denied: '/Users/gomcrai/Desktop'

如果您真正想复制而不是移动,那么shutil.copytree是一个更好的选择。 move将移动条目,并删除原始条目。

由于Mac在其认为应该始终存在的文件夹上具有访问控制列表,而Desktop是其中之一,因为它用于存储台式机上所有可见的文件,因此您会收到错误消息。 由于shutil.move尝试删除它,因此它符合ACL并且被拒绝。

ls -ale /Users/gomcrai/Desktop应该显示ACL,显示如下: 0: group:everyone deny delete ls -ale /Users/gomcrai/Desktop 0: group:everyone deny delete

如果您想剪切粘贴而不是复制和粘贴目录,则可以使用os.listdiros.walkDesktop/查找文件和文件夹,然后将其全部移动,或者在DesktopDesktop上使用shutil.copytree然后删除Desktop内的所有内容,同时不保留该文件夹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM