使用shutil.copyfile复制文件时出现PermissionError

时间:2019-01-24 22:35:53

标签: python

我是python的初学者,这是我的第一个应用程序。 因此,基本上,该应用程序将在其中放置一个包含mp3文件的文件夹,并读取歌手姓名的元数据,然后通过将歌曲复制到以歌手姓名命名的新创建的子文件夹中来对歌曲进行相应的排序。如果没有歌手姓名,它将创建一个名为“ unsorted”的文件夹并将文件复制到该文件夹​​中。我已经可以创建新文件夹了,但是复制文件的最后一点是PermissionError。下面是代码和我遇到的错误。

import os
import eyed3
import shutil

# get the path to music directory
musicFolder = input('please enter the full path of your music folder : ')
correctedPath = musicFolder.replace('/', '//')

musicList = []

# list of audio file objects
for _files in os.listdir(correctedPath):
    if _files.endswith('.mp3'):
        musicList.append(eyed3.load(correctedPath + '//' + _files))

sortedFolder = ''

# check tag info for album artist, and sort to folders
for _audioFiles in musicList:
    if _audioFiles.tag.album_artist != None:
        sortedFolder = correctedPath + '//' + _audioFiles.tag.album_artist
    else:
        sortedFolder = correctedPath + '//' + 'Unsorted'
    if not os.path.exists(sortedFolder):
        os.mkdir(sortedFolder)
    shutil.copyfile(_audioFiles.path, sortedFolder)

错误 PermissionError:[Errno 13]权限被拒绝:'C:// Users // Manu // Music // Music Test // Coldplay'

我们非常感谢您的帮助。 感谢您的宝贵时间。

2 个答案:

答案 0 :(得分:0)

在我看来,您正在使用正斜杠/应该在其中使用反斜杠。

'C://Users//Manu//Music//Music Test//Coldplay'

应该是

'C:\\Users\\Manu\\Music\\Music Test\\Coldplay'

更好的是,Python内置了用于协助路径的库:os.path和pathlib。

https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux-11a072b58d5f

答案 1 :(得分:0)

shutil.copy2(src,dst)为我修复了它。我从shutil.copyfile更改了它。

shutil copy functions