读取文件并解析数据
Reading a file and parsing the data
我正在读取一个文件并只打印行中有 "load" 的行并且它正在工作,但我希望数据更清晰或更清晰,因为输出数据是 [soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
其中主机名包含在 out
后面的括号内,我想删除它并希望数据以两列格式查看或至少删除它们:
$ cat logs.py
#!/python/v3.6.1/bin/python3
with open("file_1") as f:
data = f.read()
for line in data.splitlines():
if "load" in line:
print(line)
print("")
文件内容
$ cat file_1
[soi-aahh] sudo: uptime
[soi-aahh] out: sudo password:
[soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
[soi-aahh] out:
[soi-aabk] sudo: uptime
[soi-aabk] out: sudo password:
[soi-aabk] out: 16:45:50 up 586 days, 23:08, 7 users, load average: 1.01, 1.03, 1.00
[soi-aabk] out:
[soi-abrrj] sudo: uptime
[soi-abrrj] out: sudo password:
[soi-abrrj] out: 16:45:50 up 219 days, 6:31, 4 users, load average: 0.00, 0.00, 0.00
[soi-abrrj] out:
[soi-ritsh] sudo: uptime
[soi-ritsh] out: sudo password:
[soi-ritsh] out: 16:45:50 up 586 days, 23:13, 15 users, load average: 5.01, 5.02, 5.04
[soi-ritsh] out:
脚本输出:
$ ./logs.py
[soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
[soi-aabk] out: 16:45:50 up 586 days, 23:08, 7 users, load average: 1.01, 1.03, 1.00
[soi-abrrj] out: 16:45:50 up 219 days, 6:31, 4 users, load average: 0.00, 0.00, 0.00
[soi-ritsh] out: 16:45:50 up 586 days, 23:13, 15 users, load average: 5.01, 5.02, 5.04
期望:
Hostname Uptime
soi-aahh 16:45:50 up 436 days
或至少低于:
soi-aahh: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
请建议是否有更好的方法来读取文件并执行此操作。
您可能需要 trim 行:
with open("file_1") as f:
data = f.read()
print('Hostname \t Uptime')
for line in data.splitlines():
if "load" in line:
print(line.replace('] out: ', '\t').strip('['))
print("")
我正在读取一个文件并只打印行中有 "load" 的行并且它正在工作,但我希望数据更清晰或更清晰,因为输出数据是 [soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
其中主机名包含在 out
后面的括号内,我想删除它并希望数据以两列格式查看或至少删除它们:
$ cat logs.py
#!/python/v3.6.1/bin/python3
with open("file_1") as f:
data = f.read()
for line in data.splitlines():
if "load" in line:
print(line)
print("")
文件内容
$ cat file_1
[soi-aahh] sudo: uptime
[soi-aahh] out: sudo password:
[soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
[soi-aahh] out:
[soi-aabk] sudo: uptime
[soi-aabk] out: sudo password:
[soi-aabk] out: 16:45:50 up 586 days, 23:08, 7 users, load average: 1.01, 1.03, 1.00
[soi-aabk] out:
[soi-abrrj] sudo: uptime
[soi-abrrj] out: sudo password:
[soi-abrrj] out: 16:45:50 up 219 days, 6:31, 4 users, load average: 0.00, 0.00, 0.00
[soi-abrrj] out:
[soi-ritsh] sudo: uptime
[soi-ritsh] out: sudo password:
[soi-ritsh] out: 16:45:50 up 586 days, 23:13, 15 users, load average: 5.01, 5.02, 5.04
[soi-ritsh] out:
脚本输出:
$ ./logs.py
[soi-aahh] out: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
[soi-aabk] out: 16:45:50 up 586 days, 23:08, 7 users, load average: 1.01, 1.03, 1.00
[soi-abrrj] out: 16:45:50 up 219 days, 6:31, 4 users, load average: 0.00, 0.00, 0.00
[soi-ritsh] out: 16:45:50 up 586 days, 23:13, 15 users, load average: 5.01, 5.02, 5.04
期望:
Hostname Uptime
soi-aahh 16:45:50 up 436 days
或至少低于:
soi-aahh: 16:45:50 up 436 days, 2:06, 5 users, load average: 0.08, 0.02, 0.00
请建议是否有更好的方法来读取文件并执行此操作。
您可能需要 trim 行:
with open("file_1") as f:
data = f.read()
print('Hostname \t Uptime')
for line in data.splitlines():
if "load" in line:
print(line.replace('] out: ', '\t').strip('['))
print("")