我对Python比较陌生。 我正在尝试创建一个程序,如果' _L2'存在于文件名中。 这是代码。
import os
def deleteInCurrent():
L = os.listdir(os.getcwd())
for i in range(len(L)):
filename = L[i].rsplit(".", 1)[0]
if '_L2' in filename:
os.rename(filename+'.'+L[i].rsplit(".", 1)[1], filename[0:len(filename)-3]+'.'+L[i].rsplit(".", 1)[1])
print(os.getcwd())
for path, dirs, files in os.walk(os.getcwd()):
deleteInCurrent()
for i in range(len(dirs)):
os.chdir(dirs[i])
deleteInCurrent()
os.chdir("..")
print("Done")
在这里,我能够删除当前目录和较低目录下的文件。
我能做的是检查当前和1个深度较低的目录,如果' _L2'那么从反向删除3个字符串。存在。
但我想做的是检查所有文件夹中的所有文件并自动执行相同的操作。
我能得到一条建议吗?
答案 0 :(得分:1)
我建议您使用" pathlib"模块而不是" os"模块?
如果是这样,以下代码应该做你想要的:
from pathlib import Path
def ren(old_pathlib_path):
parent = old_pathlib_path.parent
stem = old_pathlib_path.stem
suffix = old_pathlib_path.suffix
if '_L2' in stem:
stem = stem[:-3]
new_pathlib_path = parent / (stem + suffix)
old_pathlib_path.rename(new_pathlib_path)
start = Path('abs_topmost_dir_path')
for f in start.glob('**/*'):
ren(f)