[英]CPU output to csv format - python
我正在尝试以 csv 格式获取整个 CPU 输出。 但它只打印 csv 输出中的最后一行。 有人可以调查一下并帮助我更正以下脚本。
import paramiko
import subprocess
import csv
myfile = open(r"file input path")
txt = myfile.read()
client = paramiko.SSHClient()
target_host = txt
un = 'root'
pwd = 'xxx'
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=target_host,username=un,password=pwd)
stdin, stdout, stderr = client.exec_command('ps -aux')
for line in stdout:
with open("cpuoutput.csv", "w", newline="") as f:
f.write(line)
print (line)
当您以模式"w"
(写入)打开文件时,它会删除以前的计数
所以你应该只打开一次文件 - 在循环之前
with open("cpuoutput.csv", "w", newline="") as f:
for line in stdout:
f.write(line)
print (line)
或者您必须使用模式"a"
(附加)来保留以前的内容
for line in stdout:
with open("cpuoutput.csv", "a", newline="") as f:
f.write(line)
print (line)
对于较大的文件,第一种方法应该更快,因为它不必为每一行关闭并重新打开文件。
第二种方法在脚本可能会崩溃时会更安全,因为系统通常不是在 Python write()
而是在 Python close()
文件时将数据保存在磁盘上 - 因此在每行之后关闭可以在出现崩溃时将前几行保留在磁盘上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.