Python open + append doesn't work as expected

According to the documentation, if I use open ("file", "a") and write to a file, new data will be added, but in the example below, the second command simply overwrites the file. I donโ€™t quite understand 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 the "a + b" mode, but I get the same end result.

+3
source share
1 answer

In subprocess file position does not increase. log.tell() returns 0 in the second with statement. You can put the log position at the end of the file. And it seems good for wait() for the first Process . The 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) 
+4
source

All Articles