【问题标题】:How remove all whitespace in multiple filenames?如何删除多个文件名中的所有空格?
【发布时间】:2021-02-27 16:14:44
【问题描述】:

我是 Python 新手。我正在将 evtx 日志文件转换为 xml,但是,某些 evtx 文件的名称中有空格,并且在文件转换开始时出现错误。 其中一种解决方案是手动删除 evtx 文件名中的所有空格,但在处理大量文件时这是不可能的。

我需要从多个目录中的文件名中删除所有空格。我正在尝试通过使用.replace(" ","") 删除空格来重命名文件,但是,我不断收到错误消息:

FileNotFoundError: [Errno 2] No such file or directory:

代码:

dir_path = '/home/user/evtx_logs'

for dirpath, dirnames, filenames in os.walk(dir_path):
    for f in filenames:
        new_filename = f.replace(" ","")
        os.rename(f,new_filename)

是否有任何其他替代方法可以重命名或忽略文件名中的空格?

【问题讨论】:

标签: python python-3.x file-rename


【解决方案1】:

尝试打印出目录遍历的值。您会注意到文件名不是路径,它们只是文件的名称。当您尝试重命名文件时,您需要将您的函数指向整个路径。像这样的:

for dirpath, dirnames, filenames in os.walk(dir_path):
    for f in filenames:
        filepath = os.path.join(dirpath, f)
        new_filename = f.replace(" ","")
        new_filepath = os.path.join(dirpath, new_filename)
        os.rename(filepath, new_filepath)

【讨论】:

    【解决方案2】:

    解决方案

    dir_path = '/home/user/evtx_logs' 
    
    for dirpath, dirnames, filenames in os.walk(dir_path):
        for f in filenames:
            new_filename = f.replace(" ","")
            os.rename(os.path.join(dirpath, f), os.path.join(dirpath, new_filename))
    

    您需要将full path 提供给os.rename 才能进行重命名。

    这里

    os.path.join(dirpath, new_filename)
    

    dirpath 或 dirnames,不知道具体:

    os.path.join(dirnames, new_filename)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 2016-03-29
      • 2011-05-05
      • 1970-01-01
      • 2016-08-22
      • 2018-11-22
      • 2015-04-11
      相关资源
      最近更新 更多