用Python实现每3秒钟读寄存器命令,使用os.system(cmd)的方式,总是终端输出正确但返回给变量是0,调试一圈才发现不是进制转换的问题,而是用错了方法,换到os.popen(cmd)就pass了from datetime import datetimeimport timeimport osdef task(): now = datetime.now() ts = now.strftime("%Y-%m-%d %H:%M:%S") in = int(os.popen(cmd1_tcpin).read(), 16) output_ch1 = int(os.popen(cmd2_output_ch1).read(), 16) output_ch2 = int(os.popen(cmd3_output_ch2).read(), 16) return str(ts) + ',' + str(in) + ',' + str(output_ch1 ) + ',' + str(output_ch2 )def func(): with open('output.txt', 'w', encoding='utf-8') as writer: while True: writer.writelines(task() + '\n') time.sleep(3)那么python在与操作系统交互的两大方式os.system()和os.popen。1、os.system(cmd)的返回值会有0(成功),1,2。若执行成功,那么会返回0,表示命令执行成功。否则,则是执行错误。2、os.popen(cmd)执行命令后后通过一个管道文件将结果返回,再对其进行read()操作即可获得执行的输出3、subprocess模块也可实现 import subprocess result = subprocess.call('./more.sh') print(result)