如何将Python执行系统命令的输出结果存储到文本文件中
解决方案
下面是两种常用的可行实现方案,你可以根据自己的使用场景选择:
方案1:直接使用Shell重定向(最简实现)
如果你不需要在Python代码中对命令输出做额外处理,直接利用Shell自带的重定向语法即可,无需引入其他依赖。
示例代码:
import os # > 表示覆盖写入文件,需要追加内容的话替换为 >> os.system('ls -al > output.txt')
执行后命令的所有输出会直接写入当前目录下的output.txt文件。
方案2:通过subprocess模块捕获输出后写入(适合需要预处理输出的场景)
os.system仅能返回命令的执行状态码,无法直接捕获输出内容。如果你需要先拿到输出做过滤、修改等操作再存入文件,推荐使用Python标准库自带的subprocess模块实现:
示例代码:
import subprocess # capture_output=True表示捕获标准输出/错误,text=True表示返回字符串而非字节流 cmd_result = subprocess.run( ['ls', '-al'], capture_output=True, text=True ) # 拿到命令执行的标准输出内容 output_content = cmd_result.stdout # 如果需要同时捕获错误输出,可以将stderr合并到stdout: # cmd_result = subprocess.run(['ls', '-al'], capture_output=True, text=True, stderr=subprocess.STDOUT) # 写入本地文件 with open('output.txt', 'w', encoding='utf-8') as f: f.write(output_content)
提示:使用列表形式传入命令参数无需开启
shell=True,可以避免Shell注入风险,安全性更高。
内容的提问来源于stack exchange,提问作者Vinura Yashohara
相关产品推荐
相关产品推荐

