【问题标题】:FileNotFoundError: [Errno 2] No such file or directory: 'drone_0002_01320.jpg' -> 'drone_0002_01320.png'FileNotFoundError:[Errno 2] 没有这样的文件或目录:“drone_0002_01320.jpg”->“drone_0002_01320.png”
【发布时间】:2019-12-12 18:40:09
【问题描述】:

我正在尝试使用以下代码重命名一组文件。该文件在文件夹中,但它给出了以下错误。我的代码附在此处:

import os
path='absolute_path'
arr = os.listdir(path)

for i in arr:
    old_name=i
    old_name_part=old_name.split(".")
    new_name=old_name_part[0]+".png"
    print(i,'\t',old_name,'\t',new_name)
    os.rename(i,new_name)

错误:

drone_0002_01320.jpg     drone_0002_01320.jpg    drone_0002_01320.png
Traceback (most recent call last):
  File "/absolute_path/rename.py", line 23, in <module>
    os.rename(i,new_name)
FileNotFoundError: [Errno 2] No such file or directory: 'drone_0002_01320.jpg' -> 'drone_0002_01320.png'

【问题讨论】:

  • 你应该相信你的电脑。如果它说文件不存在,那么它不存在。你说它“在文件夹内” - 哪个文件夹?它可能应该在不同的文件夹中。或者它根本不存在;)
  • 想通了:folder.os.rename(path+i,path+new_name),是不是把当前位置作为文件路径。

标签: python operating-system


【解决方案1】:

os.rename(i,new_name) 获取文件的完整路径

你可以把它改成这样: os.rename(os.path.join(path, i),os.path.join(path, new_name))

考虑阅读pathlib 模块,它对这类问题有一些很好的功能

【讨论】:

  • os.rename 可以很好地处理相对路径,你只需要知道它是相对于什么的。
  • @zvone 你是对的,但如果你明确地连接这些路径,那肯定是对的:)
  • 没错,您的解决方案似乎是正确的。我只是不想让读者被误导,所以我纠正了错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2021-08-24
  • 2021-03-07
  • 2015-06-09
  • 2021-04-01
  • 2021-10-15
相关资源
最近更新 更多