如何用Python将命令输出写入文件?多命令追加保存实现方法
解决Python脚本依次执行多条命令并追加输出到文件的问题
嘿,我来帮你搞定这个问题!你之前的代码没法正确执行多条命令,是因为直接把cmd1、cmd2的字符串拼在一起后,shell会把它当成一个完整的奇怪命令(比如dirwhoami),这显然不是你想要的效果。下面给你两种可行的解决方案,优先推荐第一种,更灵活可控:
方法一:循环逐个执行命令(推荐)
这种方式会依次执行每个命令,完成一个再执行下一个,能清晰区分不同命令的输出,跨平台性也更好。
import subprocess # 把要执行的命令放进列表,后续加新命令直接往里加就行 commands = ['dir', 'whoami'] output_file_path = 'command_output.txt' # 以追加模式打开文件,循环执行每条命令 with open(output_file_path, 'a', encoding='utf-8') as output_file: for cmd in commands: print(f"正在执行命令: {cmd}") # 可选:控制台打印执行状态,方便跟踪 # 使用subprocess.run等待命令执行完成,将输出写入文件 # stderr=subprocess.STDOUT 可选:把错误输出也同步写到文件里 # text=True 让输出以文本格式写入,避免二进制乱码问题 subprocess.run( cmd, shell=True, stdout=output_file, stderr=subprocess.STDOUT, text=True ) # 可选:在不同命令的输出之间加分隔线,方便后续阅读区分 output_file.write('\n' + '='*60 + '\n')
为什么推荐这种方法?
- 每个命令独立执行,能精准控制执行顺序,哪怕其中一个命令失败,也能选择继续执行后续命令
- 代码可读性高,逻辑清晰,后续维护或扩展命令都很方便
- 跨平台兼容性强,不管是Windows的cmd、PowerShell还是Linux的bash都能适配
方法二:用Shell命令分隔符串联执行
如果你想用一条Shell命令完成,也可以用Shell的命令分隔符把多个命令连起来。比如Windows的cmd里用&&(前一个命令成功才执行后一个)或者&(不管前一个是否成功都执行):
import subprocess output_file_path = 'command_output.txt' # 用&&连接两条命令,确保前一条执行成功后再执行后一条 combined_command = 'dir && whoami' with open(output_file_path, 'a', encoding='utf-8') as output_file: subprocess.run( combined_command, shell=True, stdout=output_file, stderr=subprocess.STDOUT, text=True )
注意事项
- 这种方法依赖Shell的语法,Windows和Linux的分隔符不一样(Linux用
;或&&),跨平台时需要调整 - 如果其中一条命令出错,用
&&的话后续命令不会执行,用&则会继续,但排查问题时不如逐个执行清晰
内容的提问来源于stack exchange,提问作者Thiru
相关产品推荐
相关产品推荐

