欢迎各位兄弟 发布技术文章
这里的技术是共享的
lines = output.splitlines() 详解splitlines() 是 Python 字符串的内置方法,用于将字符串按行边界分割,返回一个由各行组成的列表。
它会自动识别不同的换行符(如\n、\r\n、\r等),确保跨平台兼容性。
split('\n')的区别| 方法 | 处理换行符 | 是否保留行尾空行 |
|---|---|---|
output.splitlines() | 自动处理\n、\r\n、\r | 默认不保留末尾空行 |
output.split('\n') | 仅按\n分割 | 保留末尾空行(如'') |
示例对比:
pythonoutput = "line1\nline2\r\nline3\rline4\n" print(output.splitlines()) # 输出: ['line1', 'line2', 'line3', 'line4'] print(output.split('\n')) # 输出: ['line1', 'line2\r', 'line3\rline4', '']
keepends=False(默认):
若为True,会在每行末尾保留换行符(如"line1\n")。
通常无需保留,因为后续处理可能需去掉换行符。
解析命令行输出
例如从subprocess获取的命令输出,需逐行检查:
pythonimport subprocess output = subprocess.check_output("netsh advfirewall show allprofiles", shell=True, text=True) lines = output.splitlines() # 分割为行列表
处理文本文件
读取文件后直接分割为行:
pythonwith open("config.txt", "r") as f: lines = f.read().splitlines() # 避免手动去掉换行符
日志分析
逐行分析日志时:
pythonerror_logs = [line for line in lines if "ERROR" in line]
空行处理:splitlines()会跳过末尾的空白行(如"text\n\n" → ['text']),但中间空行会保留:
python"a\n\nb".splitlines() # 结果: ['a', '', 'b']
性能考虑:
对大文本文件,直接遍历文件对象(如for line in file:)更高效,避免内存爆炸。
在原代码上下文中,output可能来自:
命令行工具的输出(如netsh防火墙配置)。
多行文本文件或API返回的配置数据。
通过splitlines(),将多行文本转为列表结构,便于后续通过行号索引(如lines[i+2])或逐行检查关键配置状态。