【问题标题】:`shutil.copyfile` Error: Permissions Denied`shutil.copyfile` 错误:权限被拒绝
【发布时间】:2023-08-07 15:10:01
【问题描述】:

我已经处理了许多其他线程,但他们的解决方案似乎在这里不起作用,或者我没有正确理解,并且希望您的帮助。

我得到一个:

IOError: [Errno 13] Permission denied: 'W:\\test\\Temporary Folder 195\\Sub-fold1 

这是我开始使用的通用代码。

    summary_file = r'W:/test/SDC Analysis Summary.docm'
    shutil.copyfile(summary_file, os.getcwd())

我还根据其他线程对此进行了一些更改,特别是将 summary_file 替换为实际文本,并将 \ 添加到工作目录的末尾,但没有成功。真的不知道我在这里错过了什么。我知道文档正在寻找完整的路径,但我相信我满足了这一要求。我在这里想念什么?

注意:由于速度的提高,希望使用 copyfile 而不是 copy。

【问题讨论】:

    标签: python shutil file-copying


    【解决方案1】:

    来自documentation

     dst must be the complete target file name
    

    您不能只使用os.getcwd() 作为目的地。

    【讨论】:

    • 为什么不,os.getcwd() 获取不到完整的目标文件路径>?
    • @WolVes:文档没有说目标文件路径。他们说目标文件名
    • 是目录名。您还需要提供文件名:例如os.path.join(os.getcwd(), "SDC Analysis Summary.docm")
    • O.o 明白了。谢谢 Eduffy!
    【解决方案2】:

    你应该是目的地的完整目标文件名

    目的地 = 路径目录 + 文件名。*

    我将此代码用于复制 wav 文件和 shutil :

        # open file with QFileDialog
    
        browse_file = QFileDialog.getOpenFileName(None, 'Open file', 'c:', "wav files (*.wav)")
    
        # get file name 
    
        base = os.path.basename(browse_file[0])
        os.path.splitext(base)
        print(os.path.splitext(base)[1])
    
        # make destination path with file name
    
        destination= "test/" + os.path.splitext(base)[0] + os.path.splitext(base)[1]
        shutil.copyfile(browse_file[0], destination)
    

    【讨论】: