【问题标题】:Rename Files without Extension重命名不带扩展名的文件
【发布时间】:2018-01-11 13:53:40
【问题描述】:

所以我有一个目录Dir,在Dir 中有三个子目录,每个子目录有五个文件:

  1. Dir/A/一、二、三、四、五.txt
  2. Dir/B/一、二、三、四、五.txt
  3. Dir/C/一、二、三、四、五.txt

如您所见,有四个没有扩展名的文件和一个带有 .txtextension 的文件

如何以递归方式重命名所有不带扩展名的文件?

目前我正在尝试这个,它适用于单个目录,但是如果我将此脚本放入 Dir,我怎么能捕获所有文件?

import os, sys

for filename in os.listdir(os.path.dirname(os.path.abspath(__file__))):
    base_file, ext = os.path.splitext(filename)
    if ext == "":
        os.rename(filename, base_file + ".png")

【问题讨论】:

标签: python python-3.x


【解决方案1】:

如果要执行递归遍历,请使用os.walk。

for root, dirs, files in os.walk(os.path.dirname(os.path.abspath(__file__))):
    for file in files:
        base_path, ext = os.path.splitext(os.path.join(root, file))

        if not ext:
            os.rename(base_path, base_path + ".png")

os.walk 会将您的文件隔离到普通文件和目录中,因此不需要os.path.isdir。

【讨论】:

    【解决方案2】:
    import os
    
    my_dir = os.getcwd()
    for root, dirnames, fnames in os.walk(my_dir):
        for fname in fnames:
            if fname.count('.'): continue  # don't process a file with an extension
            os.rename(os.path.join(root, fname), os.path.join(root, "{}.png".format(fname)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 2015-03-11
      • 2018-03-02
      • 2017-07-05
      相关资源
      最近更新 更多