According to the documentation if I use open("file","a") and write to the file the new data would be appended, but in the example below the second command just overwrites the file. I don't quite get why.
import subprocess
startupinfo = subprocess.STARTUPINFO()
subprocess.STARTF_USESHOWWINDOW = 1
startupinfo.dwFlags = subprocess.STARTF_USESHOWWINDOW
with open(r"c:\folder\test.txt","a") as log:
Process = subprocess.Popen(['dir'],
stdout = log, stderr = log,
startupinfo = startupinfo,
shell=True)
with open(r"c:\folder\test.txt","a") as log:
Process = subprocess.Popen(['dir'],
stdout = log, stderr = log,
startupinfo = startupinfo,
shell=True)
I already tried mode "a+b", but I get the same end result.
Within the subprocess the file position is not increased. log.tell() returns 0 in the second with statement. You can incease the position of log to the end of the file. And it seems to be good to wait() for the first Process. Following works for me:
import subprocess
from os import linesep, stat
with open(r"test.txt","a") as log:
Process = subprocess.Popen(['dir'],
stdout = log, stderr = log,
shell=True)
Process.wait()
with open(r"test.txt","a") as log:
# this prints 0
print log.tell()
# get the length of the file log
pos = stat(r"test.txt").st_size
print pos
# go to the end of log
log.seek(pos)
Process = subprocess.Popen(['dir'],
stdout = log, stderr = log,
shell=True)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With