【问题标题】: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

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

【问题讨论】:

    标签: python file operating-system rename


    【解决方案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——你用+连接一个文字字符串,而不是传递一个逗号分隔的列表——但是因为这个是多余的,把它拿出来。
      猜你喜欢
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多