项目需要:python遍历文件夹及子文件夹下的所有文件.htm文件,然后替换字符
手动替换不是程序员应有的样子,使用python
方法1:
import os
def show_files(path, all_files):
# 首先遍历当前目录所有文件及文件夹
file_list = os.listdir(path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
if os.path.splitext(cur_path)[1]=='.htm':
all_files.append(cur_path)
return all_files
# 传入空的list接收文件名
contents = show_files("E:DeskTopworkssssssssssssssssssssss2019三亚军方在线考试系统船舶避碰App材料html", [])
# 循环打印show_files函数返回的文件名列表
print(len(contents))
i=0
for path in contents:
i=i+1
print(i)
print(path)
#读入
f = open(path, "r", encoding="gbk")
#获取内容
str1 = f.read()
#替换内容
str2 = str1.replace("%20"," ")
#写出文件
ff = open(path, "w")
#将信息写入缓冲区
ff.write(str2)
#刷新缓冲区
ff.flush()
f.close()
ff.close()
方法2
来自评论区的提示,使用pathlib的rglob 直接遍历当前文件及所有子文件夹下的所有htm文件
import pathlib
p1=pathlib.Path('/Users/liuchunlei/python/test3/')
htmls=p1.rglob('*.htm')
for htm in htmls:
print(htm)
其他:
- Path.is_dir()与Path.is_file()
print(Path('D:/NoneExistsPath').is_dir())
print(Path('D:/NoneExistsPath').is_file())
- Path.exists()
- Path.iterdir()
当path为文件夹时,通过yield产生path文件夹下的所有文件、文件夹路径的迭代器
p = Path.cwd()
for i in p.iterdir():
print(i)
参考:
CSDN-专业IT技术社区-登录blog.csdn.net