重命名文件,而不扩展
问题描述:
所以我有一个目录Dir
和Dir
有三个子目录,每个五个文件:重命名文件,而不扩展
- DIR/A /一,二,三,四,five.txt
- 迪尔/ B /一,二,三,四,five.txt
- DIR/C /一,二,三,四,five.txt
正如你可以看到有四个文件没有扩展和一个与.txt
扩展离子
如何以递归方式重命名所有文件,而不扩展?
目前我想这一点,这适用于单个目录,但我怎么能捕获所有文件,如果我把这个脚本到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")
答
如果您想要执行递归遍历,请使用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
。
+0
完美,非常感谢! – Lyux
答
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)))
看看os.walk()也许这个SO-问题:https://*.com/questions/1176441/how-to-filter-files-with-known-type-from- os-walk –