如何将命令提示符输出内容完整复制到TXT文件?
解决os.system执行命令只返回退出码的问题
os.system()返回的是命令的退出状态码,0就代表命令执行成功,它不会捕获命令本身的输出内容——你看到的netstat -ano结果是直接打印到控制台的,而你print的只是这个命令的执行状态码。
要捕获命令输出并保存到文件,推荐用Python的subprocess模块(比os.system更强大、更灵活),给你几个实用的写法:
方法1:捕获标准输出并保存(Python 3.5+推荐)
import subprocess # 执行命令并捕获输出,text=True让输出以字符串形式返回 result = subprocess.run('netstat -ano', stdout=subprocess.PIPE, text=True) # 打印命令输出 print(result.stdout) # 将输出写入文件 with open('netstat_result.txt', 'w', encoding='utf-8') as f: f.write(result.stdout)
方法2:用check_output捕获输出(命令失败会抛出异常)
import subprocess # 直接获取命令输出,同样用text=True转成字符串 output = subprocess.check_output('netstat -ano', text=True) print(output) # 写入文件 with open('netstat_result.txt', 'w', encoding='utf-8') as f: f.write(output)
方法3:同时捕获标准输出和错误输出
如果需要排查命令执行中的错误,可以同时捕获stderr:
import subprocess result = subprocess.run('netstat -ano', stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) print("命令输出:") print(result.stdout) print("\n错误信息:") print(result.stderr) # 把完整内容写入文件 with open('netstat_full_log.txt', 'w', encoding='utf-8') as f: f.write("命令输出:\n") f.write(result.stdout) f.write("\n错误信息:\n") f.write(result.stderr)
注意:如果是Linux/macOS系统,netstat的参数可能和Windows不同,但捕获输出的逻辑完全一致。
内容的提问来源于stack exchange,提问作者Tyler Eckhardt
相关产品推荐
相关产品推荐

