簡體   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