CPU输出为csv格式-python
我正在尝试以csv格式获取整个CPU输出。但它只打印csv输出中的最后一行。有人可以看看这个,并帮助我纠正下面的脚本CPU输出为csv格式-python,python,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
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()
时,而是在Pythonclose()
文件时,所以在每一行之后关闭可以在有故障时保留磁盘上的前几行。当您以模式打开文件时(write)然后它删除前面的countent
所以您应该在循环之前只打开文件一次
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)
第一种方法对于较大的文件应该更快,因为它不必为每一行关闭和重新打开文件
第二种方法在脚本崩溃时更安全,因为系统通常在磁盘上保存数据,而不是在Pythonwrite()
时,而是在Pythonclose()
文件时-因此,在每行之后关闭可以在出现故障时保留磁盘上的前几行。在循环之前打开文件:打开(“cpuoutput.csv”,“w”,newline=”“)as f:用于标准输出中的行:
。当您在write'w'
模式下打开它时,每次打开它时,它都会被截断。另外,如果要打印每一行,它应该在循环中,而不是在循环之后。打开循环之前的文件:,并将Open(“cpuoutput.csv”,“w”,newline=“”)作为f:for-line-in-stdout:
。当您在write'w'
模式下打开它时,每次打开它时,它都会被截断。另外,如果要打印每一行,它应该在循环中,而不是在循环之后。