首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PermissionError:[Errno 13]当我使用shutil.copy()将csv文件从一个文件夹复制到另一个文件夹时,权限被拒绝

PermissionError:[Errno 13]当我使用shutil.copy()将csv文件从一个文件夹复制到另一个文件夹时,权限被拒绝
EN

Stack Overflow用户
提问于 2019-09-30 16:11:35
回答 2查看 1K关注 0票数 0

我只是试图复制在第二个_之后具有唯一组名的文件。总共有三个这样的团体。我试图把这些分成三个不同的文件夹。我一直和shutil.copy有问题。Python版本3。

代码:

代码语言:javascript
运行
复制
import os, os.path, shutil

folder_path = 'nodelists'
all_cells = [f for f in os.listdir(folder_path) if 
os.path.isfile(os.path.join(folder_path, f))]
print("Length of all cells:",len(all_cells))

count=0
for cell in all_cells:
    folder_name = cell.split('_')[2]
    new_path = folder_name+"_nodelists"
    if not os.path.exists(new_path):
        os.mkdir(new_path)

    old_cell_path = os.path.join(folder_path, cell)
    shutil.copy(old_cell_path,new_path)

    count+=1

    if count % 500 == 0:
        print ("Progress:",count, " done")
        print("cell id is", str(cell))

###OUTPUT:

代码语言:javascript
运行
复制
Length of all cells: 15533
Progress: 500  done
cell id is AAGCGTTCAACTAGAA-1_nodelist_old_.csv
Progress: 1000  done
...
DISPLAYS RESULTS CORRECTLY! I am even able to open and check these files.##
...
Progress: 9500  done
cell id is GGGACCTAGCGACTAG-1_nodelist_postnatal_.csv

---------------------------------------------------------------------------
PermissionError                           Traceback (most recent call last)
<ipython-input-2-90d1a4cf5db0> in <module>()
     20     #new_cell_path = os.path.join(new_path, cell)
     21     #shutil.copy(old_cell_path, new_cell_path)
---> 22     shutil.copy(old_cell_path,new_path)
     23 
     24     count+=1

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copy(src, dst, follow_symlinks)
    239     if os.path.isdir(dst):
    240         dst = os.path.join(dst, os.path.basename(src))
--> 241     copyfile(src, dst, follow_symlinks=follow_symlinks)
    242     copymode(src, dst, follow_symlinks=follow_symlinks)
    243     return dst

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copyfile(src, dst, follow_symlinks)
    120         with open(src, 'rb') as fsrc:
    121             with open(dst, 'wb') as fdst:
--> 122                 copyfileobj(fsrc, fdst)
    123     return dst
    124 

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copyfileobj(fsrc, fdst, length)
     77     """copy data from file-like object fsrc to file-like object fdst"""
     78     while 1:
---> 79         buf = fsrc.read(length)
     80         if not buf:
     81             break

PermissionError: [Errno 13] Permission denied

我试着通过“作为管理员运行”来允许木星。这些东西似乎还没穿过去。我正在使用Windows 10,无法为我的文件夹找到一个安全选项卡。所有这些文件夹都在我的盒子同步文件夹上。

任何帮助都是非常感谢的!

编辑:在我尝试了:除了PermissionError之外,我现在得到:

代码语言:javascript
运行
复制
---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-8-909c0ceea90a> in <module>()
     19 
     20     try:
---> 21         shutil.copy(old_cell_path,new_path)
     22 
     23     except PermissionError as error:

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copy(src, dst, follow_symlinks)
    239     if os.path.isdir(dst):
    240         dst = os.path.join(dst, os.path.basename(src))
--> 241     copyfile(src, dst, follow_symlinks=follow_symlinks)
    242     copymode(src, dst, follow_symlinks=follow_symlinks)
    243     return dst

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copyfile(src, dst, follow_symlinks)
    120         with open(src, 'rb') as fsrc:
    121             with open(dst, 'wb') as fdst:
--> 122                 copyfileobj(fsrc, fdst)
    123     return dst
    124 

~\AppData\Local\Continuum\anaconda3\lib\shutil.py in copyfileobj(fsrc, fdst, length)
     77     """copy data from file-like object fsrc to file-like object fdst"""
     78     while 1:
---> 79         buf = fsrc.read(length)
     80         if not buf:
     81             break

OSError: [Errno 22] Invalid argument

有人能帮助调试吗?谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-09-30 16:29:35

看起来已经成功地完成了9500多个条目。我敢打赌,无论是其中一个文件夹还是其中一个文件,都存在一些权限问题。打开powershell,导航到目录目录,然后运行如下所示:

代码语言:javascript
运行
复制
gci | ForEach-Object -Process {Get-Acl -Path $_.FullName}

在提供的示例中,我们将查看目录的顶层,并获取目录中每个项的访问控制级别。将-Recurse参数添加到gci中也会遍历所有子目录和子项,并且可能是您要寻找的。一旦powershell创建了列表,您就可以筛选和探索问题文件。

或者,您可以将python复制函数包装在try/catch中,并在python中记录错误文件/目录名,然后返回错误文件列表,然后返回到后面手动编辑这些项的权限。

票数 0
EN

Stack Overflow用户

发布于 2019-09-30 19:19:23

在尝试之后,

我就能够在没有任何错误的情况下复制:除了PermissionError和OSError。即使在有了这些异常之后,它也没有经过“除了”,而是成功地复制了所有的文件。我不太清楚为什么和怎么做,但这件事成功了。谢谢你的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58171598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档