Python 重命名包含空格的文件名
我正在编写一个简单的Python脚本来重命名目录中的所有文件,用连字符替换文件名中的所有空格。我有以下操作系统崩溃Python 重命名包含空格的文件名,python,file,operating-system,rename,Python,File,Operating System,Rename,我正在编写一个简单的Python脚本来重命名目录中的所有文件,用连字符替换文件名中的所有空格。我有以下操作系统崩溃 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(" ", "-"))) 给出控制台中的错误
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行,在
OSError:[Errno 2]没有这样的文件或目录
了解发生这种情况的原因吗?如果您已经在包含要重命名文件的目录中,则无需提供绝对路径:
for filename in filenames:
os.rename(filename, filename.replace(" ", "-"))
我认为这只是因为调用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实际的错误是,您没有将参数列表传递给
os.path.join
——您将一个文字字符串与+,而不是传递一个逗号分隔的列表——但由于这是多余的,只需将其取出即可。