python - 将文件夹中的所有文件名更改为其他 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
文件名New
和New_
我明白什么.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')
以及它的任何其他变体
我在这里做错了什么?
解决方案
问题是您希望os.listdir()
给您一个绝对路径列表,但它实际上只给您文件/目录的名称(基本名称)。OTOHos.rename()
需要文件的路径。仅将文件名传递给的特殊情况os.rename()
仅在您当前的工作目录与您尝试重命名的文件相同时才有效。
推荐阅读
- docker - time.LoadLocation 正常工作,但在我的 docker 实例上引发错误!我如何解决它?
- linux - 我有 3 行的文件,如下所示。使用linux如何获取一行的拆分变量并将其附加到同一行
- java - 从 jar 中的资源文件夹错误中设置目录路径
- c++ - 使用 SFINAE 作为模板参数的编译时递归
- c# - 有没有办法自动更新 Visual Studio / C# 中修改方法的文档注释块?
- python - PyTorch DQN 代码无法解决 OpenAI CartPole
- javascript - 如何使用保存和路由按钮 Dynamics 365?
- go - 未定义的全局变量
- accessibility - 自动弹出窗口和键盘可访问性
- coq - 如何在 Coq 中销毁列表(nil 或非 nil)