重命名包含空格的文件名

时间:2011-09-19 10:18:20

标签: python file operating-system rename

我正在编写一个简单的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

关于为什么会发生这种情况的任何想法?

2 个答案:

答案 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(" ", "-"))