python学习
环境搭建 虚拟环境的安装
变量命名规范和特性
数据类型 序列类型字符串 取值和切片
字符串的常用方法
交互输入
序列类型 列表
序列类型 元组 tuple
数据类型 映射类型字典
数据类型 集合
if条件语句
循环语句
VSCode 运行 python 输出端乱码解决
Python 日期和时间
python 函数
Python 模块与包
Python 文件I/O
fileinput 模块
类
Python项目生成依赖包清单requirements .txt文件
logging模块
正则表达式
异常处理
导入隔壁文件夹下的模块
logging
json
并发
flask
centos7安装python3.11
本文档使用 MrDoc 发布
-
+
首页
fileinput 模块
分为以下四种情况: --- 1. 替换某一行或者删除某行内容。 2. 在指定行后添加一行内容。 3. 替换文章中的某一内容(字符串)。 4. 删除文件中的某一关键词。 **fileinput模块可以对一个或者多个文件中的内容进行迭代,遍历等操作。使用这一模块可以方便的对文件进行遍历,格式化输出,查找,替换等操作。** 基本用法是: --- fileinput.input (files=None, inplace=False, backup='.bak', bufsize=0, mode='r', openhook=None) files: #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...]不同文件用逗号隔开。 inplace: #是否将标准输出的结果写回文件,默认不取代。如果设置为True则将操作结果就地写到原文件中。 backup: #备份文件的扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。 bufsize: #缓冲区大小,默认为0,如果文件很大,可以修改此参数。 mode: #读写模式,默认为只读。 openhook: #该钩子用于控制打开的所有文件,比如说编码方式等。 模块内置函数: --- fileinput.input() #返回能够用于for循环遍历的对象。 fileinput.filename() #返回当前文件的名称。 fileinput.lineno() #返回当前已经读取的行的数量(或者序号)。 fileinput.filelineno() #返回当前读取的行的行号。 fileinput.isfirstline() #检查当前行是否是文件的第一行 。 fileinput.isstdin() #判断最后一行是否从stdin中读取 。 fileinput.close() #关闭队列 。 ### 实例1 示例文件.txt。 ``` parameter_1 = variable_1 parameter_n = variable_n parameter_4 = variable_4 parameter_k = variable_k ``` Script ``` from fileinput import FileInput map_dict = {'variable_1': '20', 'variable_4': '15'} with FileInput('file.txt', inplace=True) as file: for line in file: line = line.strip() parts = line.split('=') parameter = parts[0].strip() variable = parts[1].strip() if variable in map_dict: print(f"{parameter} = {map_dict[variable]}") else: print(line) ``` 执行后的file.txt ``` parameter_1 = 20 parameter_k = variable_n parameter_4 = 15 parameter_k = variable_k ``` 请注意,print函数并不显示在脚本输出中,而是将行数写进文件。 ### 实例2 行替换 ```python #! /usr/bin/python3 import fileinput with fileinput.input(files=('/etc/nginx/conf.d/test.conf'),backup=".back",inplace=True) as file: for line in file: if "server_name" in line: #print函数并不显示在脚本输出中,而是将行数写进文件。 print("server_name xxxxxxxxx.com") else: print(line.rstrip() ) ``` ### 实例3 删除某一行 ```python #! /usr/bin/python3 import fileinput with fileinput.input(files=('/etc/nginx/conf.d/test.conf'),backup=".back",inplace=True) as file: for line in file: if "server_name" in line: pass #删除 else: print(line.rstrip() ) ``` ### 实例4 替换 删除 关键词 ```python #! /usr/bin/python3 import fileinput with fileinput.input(files=('/etc/nginx/conf.d/test.conf'),backup=".back",inplace=True) as file: for line in file: if "server_name" in line: print(line.rstrip().replace('server_name','server') # print(line.rstrip().replace('China','')) 删除 else: print(line.rstrip() ) ```
admin
2023年1月17日 21:51
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码