Python调用shutil.copyfile报错FileNotFoundError[Errno 2]无此文件或目录
错误原因
shutil.copyfile()要求传入的目标路径必须是完整的目标文件路径(带文件名),不能仅传入文件夹路径。你当前代码中output仅为目标文件夹路径,copyfile不会自动拼接源文件名到目标路径后,会直接尝试将文件内容写入文件夹路径,触发报错。- 目录创建逻辑存在问题:你当前
output的值为/x/x/x/x/DatasetNiiCleanedcopyB3/test/NCP/61/1255/,调用path.dirname(path.abspath(output))时,实际取到的是上一级路径/x/x/x/x/DatasetNiiCleanedcopyB3/test/NCP/61/,也就是说代码仅创建到61级目录,你要用到的1255文件夹并未被创建,进一步触发路径不存在报错。
解决方法
调整目标路径拼接逻辑和目录创建逻辑,确保目标路径是带文件名的完整路径,且目录创建到目标文件的父级即可,修正后的核心代码如下:
# loop over the image paths for imagePath in imagePaths: word='/'.join(imagePath.split('/')[7:]) #search in dataframe if((df['imgpath'].str.contains(word)).any()): imPath = Path(imagePath) destination_path= imPath.parent.absolute() # 拆分目标文件夹路径和最终完整文件路径,保留原文件名 output_dir = str(destination_path).replace('DatasetNiiCleanedcopyB', 'DatasetNiiCleanedcopyB3') output_file = path.join(output_dir, imPath.name) print('source path is'+ imagePath) print('destination path is'+ output_file) # 直接创建目标文件所在的父目录 makedirs(output_dir, exist_ok=True) # 传入完整文件路径作为copyfile的目标参数 copyfile(imagePath, output_file)
内容的提问来源于stack exchange,提问作者Rawan
相关产品推荐
相关产品推荐

