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

os.path.exists 返回 False,但 os.path.abspath 返回路径

如何解决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 举报,一经查实,本站将立刻删除。