我正在编写一个简单的Python脚本来重命名目录中的所有文件,用连字符替换文件名中的所有空格。我有以下崩溃在os.rename
import os
path = os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(os.path.join(path + filename), os.path.join(path + filename.replace(" ", "-")))
在控制台中给出错误:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
OSError: [Errno 2] No such file or directory
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:23)
我认为这只是因为你在调用os.path.join时出现了语法错误,你加入的项应该作为两个不同的参数提供,用逗号分隔。这对我来说很好:
Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> path = os.getcwd()
>>> filenames = os.listdir(path)
>>> for filename in filenames:
... os.rename(os.path.join(path, filename), os.path.join(path, filename.replace(' ', '-')))
...
>>>
答案 1 :(得分:9)
如果您已经在包含要重命名的文件的目录中,则无需提供绝对路径:
for filename in filenames:
os.rename(filename, filename.replace(" ", "-"))