微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当目录存在时,Shutil.copy IO Error2

我遇到了一个麻烦的问题,我一直无法弄清楚。 基本上我是从我的电脑本地目录复制文件一个DropBox文件夹,充当我和其他人的项目存储库。

执行shutil.copy行时,我一直保持命中IO错误。 Errno 2,N osuch文件或目录。 但是目录和文件都存在。 当我将目录更改为不同的/testing位置(我的代码中的test_dir)时,代码运行得非常好。 任何见解将不胜感激。

import os,os.path import re import shutil import sys #File Location directory_list = "path where files are located" #DropBox base directory: dropBox = "path to dropBox directory" test_dir = "path to test directory on my local machine" sed_files = os.listdir(directory_list) for i in sed_files: #print i.split("BBB")[0] #df copy_dir = re.sub(r'XXX',r'_',i.split("BBB")[0]) copy_dir = re.sub(r'ZZZ',r'/',copy_dir) copy_dir = dropBox + copy_dir + "/FIXED/" if not os.path.exists(copy_dir): os.makedirs(copy_dir) shutil.copy(directory_list+i,copy_dir) #print directory_list+i #os.rename(copy_dir+i,copy_dir+i.split("BBB")[1])

回溯错误是:

Traceback (most recent call last): File "copy_SE_files.py",line 25,in <module> shutil.copy(direcotry_list+i,copydir) File "C:Python27ArcGIS10.1libshutil.py",line 116,in copy copyfile(src,dst) File "C:Python27ArcGIS10.1libshutil.py",line 82,in copyfile with open(dst,'wb') as fdst: IOError: [Errno 2] No such file or directory: 'C:/Users/myusername/DropBox/NASA_HyspIRI_Project/Field_Data/Spectra/CVARS/April2014/LemonTrees/04172014_SE_LemonTreeCanopy/SE_Files/SpectraZZZCVARSZZZApril2014ZZZLemonTreesZZZZ04172014XXXSEXXXLemonTreeCanopyZZZSEXXXFilesBBBCVARS_na_LemonTrees_Bareground1_4deg_Refl_00355.sed'

由于堆栈溢出的敏锐眼光,问题得以解决修改该行以读取:

带重叠I / O的FILE_FLAG_NO_BUFFERING – 字节读取零

衡量方法调用的I / O需求

如何使用C读取文件夹中的所有文件

恒定写入磁盘速度

如何在Windows上将BYTE数组映射为FILE *

shutil.copy(directory_list+i,'\\?\'+os.path.abspath(copy_dir))

C + + – inheritanceandroid的ostream崩溃,但不是Windows

如何检查是否可以创build给定长度的文件

如何强制正在运行的程序使用外部方法将其I / O缓冲区的内容刷新到磁盘?

如何在我的terminal上隐藏我的input?

将WriteFile()是primefaces,如果进程被终止,但系统继续运行?

您失败了,因为路径的组合长度大于Window的MAX_PATH限制。 C:/Users/myusername/DropBox/NASA_HyspIRI_Project/Field_Data/Spectra/CVARS/April2014/LemonTrees/04172014_SE_LemonTreeCanopy/SE_Files/SpectraZZZCVARSZZZApril2014ZZZLemonTreesZZZZ04172014XXXSEXXXLemonTreeCanopyZZZSEXXXFilesBBBCVARS_na_LemonTrees_Bareground1_4deg_Refl_00355.sed是274个字符长,并没有去一些麻烦,大多数Windows文件操作的API将无法正常工作路径长度大于MAX_PATH (这是260,其中一个保留给NUL终结符)。

假设Python使用了正确的API,你可以使用扩展路径前缀 \? (它可能需要使用反斜杠而不是在你的路径中使用正斜杠;我不清楚这一点;阅读文档)。

跳出来的第一件事就是这一行:

shutil.copy(directory_list+i,copy_dir)

考虑改变它

shutil.copy(os.path.join(directory_list,i),copy_dir)

IOW,在连接文件路径时使用os.path.join() 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐