首页 > 解决方案 > 将文件夹中的所有文件名更改为其他 Python

问题描述

对于 python,我正在编写os.rename()用于重命名文件的代码

到目前为止我所拥有的:

[os.rename(f, f.replace('New', '-'))
    for f in os.listdir('.') if not f.startswith('.')]

我想做的是从C:\Users\MyName\Desktop\pythonVSC调查 C:\Users\MyName\Desktop\pythonVSC\forTest和改变所有情况New-

forTest我有两个.txt文件名NewNew_

我明白什么.replace做了,什么.listdir做了,也.startwith做了。

我的问题是,如果我将 for 语句'.'中的更改为我得到如下所示的错误os.listdir('.')'./somePath'

Exception has occurred: FileNotFoundError
[WinError 2] The system cannot find the file specified: 'New.txt' -> '-.txt'
  File "C:\Users\MyName\Desktop\pythonVSC\rename.py", line 29, in <listcomp>
    [os.rename(f, f.replace('New', '-')) for f in os.listdir('./forTest') if not f.startswith('.')]
  File "C:\Users\MyName\Desktop\pythonVSC\rename.py", line 29, in <module>
    [os.rename(f, f.replace('New', '-')) for f in os.listdir('./forTest') if not f.startswith('.')]

我尝试替换os.listdir('.')os.listdir('forTest')os.listdir('C:\Users\MyName\Desktop\pythonVSC\forTest')以及它的任何其他变体

我在这里做错了什么?

标签: pythonpython-3.x

解决方案


问题是您希望os.listdir()给您一个绝对路径列表,但它实际上只给您文件/目录的名称(基本名称)。OTOHos.rename()需要文件的路径。仅将文件名传递给的特殊情况os.rename()仅在您当前的工作目录与您尝试重命名的文件相同时才有效。


推荐阅读