重命名包含空格的文件名

Posted

技术标签:

【中文标题】重命名包含空格的文件名【英文标题】:Renaming file names containing spaces 【发布时间】:2011-11-20 03:03:35 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

我认为这只是因为您在调用 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(' ', '-')))
...
>>>

【讨论】:

【参考方案2】:

如果您已经在包含要重命名的文件的目录中,则无需提供绝对路径:

for filename in filenames:
    os.rename(filename, filename.replace(" ", "-"))

【讨论】:

+1 实际的错误是你没有将参数列表传递给os.path.join——你用+连接一个文字字符串,而不是传递一个逗号分隔的列表——但是因为这个是多余的,把它拿出来。

以上是关于重命名包含空格的文件名的主要内容,如果未能解决你的问题,请参考以下文章

重命名带有空格的文件的bash错误-mv目标不是目录

使用 spark sql 重命名 Parquet 文件中列名中的空格

如何在 Windows 7 中重命名文件夹:名称中包含空格的命令行 [关闭]

使用 fs 在 multer 中重命名上传的图像

python小工具------去除并且重命名某一目录下带有空格的文件

python小工具------去除并且重命名某一目录下带有空格的文件