我只是试图复制在第二个_之后具有唯一组名的文件。总共有三个这样的团体。我试图把这些分成三个不同的文件夹。我一直和shutil.copy有问题。Python版本3。
代码:
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:
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之外,我现在得到:
---------------------------------------------------------------------------
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
有人能帮助调试吗?谢谢!
发布于 2019-09-30 16:29:35
看起来已经成功地完成了9500多个条目。我敢打赌,无论是其中一个文件夹还是其中一个文件,都存在一些权限问题。打开powershell,导航到目录目录,然后运行如下所示:
gci | ForEach-Object -Process {Get-Acl -Path $_.FullName}
在提供的示例中,我们将查看目录的顶层,并获取目录中每个项的访问控制级别。将-Recurse
参数添加到gci
中也会遍历所有子目录和子项,并且可能是您要寻找的。一旦powershell创建了列表,您就可以筛选和探索问题文件。
或者,您可以将python复制函数包装在try/catch中,并在python中记录错误文件/目录名,然后返回错误文件列表,然后返回到后面手动编辑这些项的权限。
发布于 2019-09-30 19:19:23
在尝试之后,
我就能够在没有任何错误的情况下复制:除了PermissionError和OSError。即使在有了这些异常之后,它也没有经过“除了”,而是成功地复制了所有的文件。我不太清楚为什么和怎么做,但这件事成功了。谢谢你的帮助!
https://stackoverflow.com/questions/58171598
复制相似问题