2013-02-09 342 views
1

我想要做的是从一个文件夹内的文件夹中取出一个.mp3文件。多次。
一切都运行完美,除了当我尝试将文件复制到一个新的文件夹(已经存在),它给:[错误13]许可被拒绝:IO错误:[错误13]权限被拒绝:我有权限?

import os, shutil 

def startup(): 
    os.system("cls") 
    print "\n osu! Extractor." 
    print "\n Press ENTER to begin." 
    raw_input() 
    for basename in os.listdir('C:\Program Files (x86)\osu!\Songs'): 
     basename2 = ('C:\Program Files (x86)\osu!\Songs\\' + basename) 
     for song in os.listdir(basename2): 
      if song.endswith('.mp3'): 
       print song 
       raw_input() 
       shutil.copy(basename2, 'C:\Program Files (x86)\osu!\Extracted_Songs') 

if __name__ == '__main__': 
    startup() 

我知道我有机会复制它手动,我是我的电脑管理员,所以我不知道为什么会发生这种情况。帮助将不胜感激。

+0

运行脚本的管理。您可能必须以管理员身份运行'cmd.exe'才能执行此操作。 – Blender 2013-02-09 07:59:33

+1

您应该使用原始字符串作为路径,或使用'os.path.join' – 2013-02-09 08:01:09

+0

在较新的Windows上,如果UAC处于打开状态,则作为管理员并不一定意味着使用管理员权限运行每个命令。使用管理员权限运行也需要使用“以管理员身份运行”(有点像在UNIX上使用'sudo')你是否这样做? – 2013-02-09 08:09:13

回答

2

默认情况下,程序无权写入Program FilesProgram Files (x86)。将文件保存到其他位置或授予程序权限(例如,以管理员身份运行它)。

(shoutouts俄勒冈州立大学!)

+0

另外值得一提的是,我尝试从桌面上的项目(在文件夹中)复制其他项目到桌面上的另一个文件夹。我仍然得到相同的错误,使用与上面相同的代码。 :C – Pumear 2013-02-09 20:41:43