Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名包含空格的文件名_Python_File_Operating System_Rename - Fatal编程技术网

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(" ", "-"))) 给出控制台中的错误

我正在编写一个简单的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(" ", "-")))
给出控制台中的错误:

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
——您将一个文字字符串与+,而不是传递一个逗号分隔的列表——但由于这是多余的,只需将其取出即可。