重命名包含空格的文件名
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
——你用+连接一个文字字符串,而不是传递一个逗号分隔的列表——但是因为这个是多余的,把它拿出来。以上是关于重命名包含空格的文件名的主要内容,如果未能解决你的问题,请参考以下文章
使用 spark sql 重命名 Parquet 文件中列名中的空格
如何在 Windows 7 中重命名文件夹:名称中包含空格的命令行 [关闭]