python子进程正在覆盖用于标准输出的文件-我需要它附加到文件(windows)

python子进程正在覆盖用于标准输出的文件-我需要它附加到文件(windows),python,windows,file,subprocess,stdout,Python,Windows,File,Subprocess,Stdout,我想将subprocess.call()的STDOUT附加到现有文件中。我下面的代码覆盖了该文件- log_file = open(log_file_path, 'r+') cmd = r'echo "some info for the log file"' subprocess.call(cmd, shell=True, stdout=log_file, stderr=STDOUT) log_file.close() 我正在subprocess.call()或subprocess.Popen

我想将
subprocess.call()
STDOUT
附加到现有文件中。我下面的代码覆盖了该文件-

log_file = open(log_file_path, 'r+')
cmd = r'echo "some info for the log file"'
subprocess.call(cmd, shell=True, stdout=log_file, stderr=STDOUT)
log_file.close()
我正在
subprocess.call()
subprocess.Popen()
中寻找与
>
等效的。想找到它我快疯了

更新:

根据目前的答案,我已将代码更新为

import subprocess

log_file = open('test_log_file.log', 'a+')
cmd = r'echo "some info for the log file\n"'
subprocess.call(cmd, shell=True, stdout=log_file, stderr=subprocess.STDOUT)
log_file.close()
我正在windows中从命令行运行此代码-

C:\users\aidan>test_subprocess.py

这会将文本添加到日志文件中。当我再次运行脚本时,没有添加任何新内容。它似乎仍在覆盖文件。

请改用“a”追加模式:

log_file = open(log_file_path, 'a+')
如果您仍然看到以前的内容被覆盖,Windows可能需要您显式地查找到文件的末尾;以“r+”或“w”的形式打开并搜索到文件的末尾:

import os

log_file = open(log_file_path, 'r+')
log_file.seek(0, os.SEEK_END)

修改打开日志文件路径的方式。您正在打开文件以读取和写入“r+”。使用“a”追加模式而不是“r+”:

log_file = open(log_file_path, 'a+')

感谢您的输入-这是有意义的,但不知何故它仍然失败(我用一个完整的脚本更新了我的问题)。我更新了我的答案,添加了一个seek-to-end选项,以代替打开文件进行附加。