从一个目录复制内容并粘贴到另一个目录,IOError:[Errno 13]python

2024-06-16 11:20:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在论坛上看过几个类似的帖子,但仍然无法修复。我收到IOError:[Errno 13]权限被拒绝:“C:/../.”使用时shutil.复制(). 代码如下:

import subprocess, os, shutil

for i in range(1,3):
    path = 'C:/Users/TEvans/Desktop/Testing/slope%d' % i 
    if not os.path.exists(path): 
        os.makedirs(path)
    os.chdir(path)
    for j in range(1,4):
        path1 = 'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
        if not os.path.exists(path1): 
            os.makedirs(path1)
        src = 'C:/Users/TEvans/Desktop/Testing/PP%d/S%d' % (i, j)
        dst = 'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
        shutil.copy(src, dst)


Traceback (most recent call last):
  File "sutra.py", line 14, in <module>
    shutil.copy(src, dst)
  File "C:\Python27\lib\shutil.py", line 117, in copy
    copyfile(src, dst)
  File "C:\Python27\lib\shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 13] Permission denied: 'C:/Users/TEvans/Desktop/Testing/PP1/S1'

Tags: pathinpysrcoslinetestingusers
3条回答

在shutil.复制用于复制文件而不是目录。它需要一个文件作为第一个参数,目录或文件名作为第二个参数。如果第二个参数是文件名,它将复制并重命名文件。在

要复制目录,最好的方法是使用distutils's dir_util库包。在

>>> import distutils.dir_util
>>>
>>> dir(distutils.dir_util)
['DistutilsFileError', 'DistutilsInternalError', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__revision__', '_build_cmdtuple', '_path_created', 'copy_tree', 'create_tree', 'ensure_relative', 'errno', 'log', 'mkpath', 'os', 'remove_tree']
>>>

复制树功能将帮助您复制整个目录。在

参考以下定义。在

^{pr2}$

在shutil.复制复制文件。你想要吗shutil.copytree公司要循环复制整个目录:

import subprocess, os, shutil

for i in range(1,3):
    path = 'C:/Users/TEvans/Desktop/Testing/slope%d' % i 
    if not os.path.exists(path): 
        os.makedirs(path)
    os.chdir(path)
    for j in range(1,4):
        src = 'C:/Users/TEvans/Desktop/Testing/PP%d/S%d' % (i, j)
        dst = 'C:/Users/TEvans/Desktop/Testing/slope%d/r%d' % (i, j)
        shutil.copytree(src, dst)

我猜你在一台Windows机器上,可能是在windowsvista或更高版本上;看到这是错误号13,我很肯定你没有以管理员身份运行脚本。尝试以管理员身份运行脚本,或者如果要通过命令提示符执行脚本,请尝试运行命令行.exe然后作为管理员执行它。在

尝试使用反斜杠,因为您在windows中,而使用反斜杠时,请尝试使用原始字符串,即

path = r'C:\Users\TEvans\Desktop\Testing\slope%d'

相关问题 更多 >