如何解决os.path.exists 返回 False,但 os.path.abspath 返回路径
此代码应从 xlsx 文件中提取图片并保存副本并在新目录中将其重命名 3 次。 os.mkdir 在桌面上创建目录并保存第一张图片但之后我得到
os.rename(filename,new_name)
FileNotFoundError: [WinError 2] Impossible to find the specified file: 'image1.jpeg' -> 'newPicone0.jpeg
当我检查目录的绝对路径时,我得到了这个
os.path.abspath('renamedPix')
'C:\\Users\\divel\\Desktop\\XLSpix\\renamedPix'
即使该目录不在 XLSpix 文件夹中,而是在桌面上。
检查目录的存在我得到这个:
os.path.exists('renamedPix')
False
我不明白是什么导致了问题。 完整代码如下:
from zipfile import ZipFile
import re
import os
import shutil
file_name= "fote.xlsx"
directory= "renamedPix"
parent_dir = "C:\\Users\\divel\\Desktop"
path = os.path.join(parent_dir,directory)
os.mkdir(path)
with ZipFile(file_name,'r') as zipObj:
counter = 0
for file in zipObj.infolist():
name = file.filename
match = re.findall("jpeg$",name)
if match:
filename = os.path.basename(file.filename)
for i in range(3):
source = zipObj.open(file)
target = open(os.path.join(path,filename),'wb')
with source,target :
shutil.copyfileobj(source,target)
pic_names = ['one','two','three']
new_name = 'newPic'+pic_names[i]+str(counter)+'.jpeg'
os.rename(filename,new_name)
counter += 1
感谢您的帮助。
解决方法
将我的评论变成答案:问题在于 os.rename()
的参数只是文件名,而不是路径名。因此操作系统试图重命名当前工作目录中的文件(它们不存在)。传递完整路径名以重命名可解决此问题:
os.rename(os.path.join(path,filename),os.path.join(path,newname))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。