3

ドキュメントによると、 open("file","a") を使用してファイルに書き込むと、新しいデータが追加されますが、以下の例では、2 番目のコマンドはファイルを上書きするだけです。理由がよくわかりません。

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)

すでにモード「a + b」を試しましたが、同じ最終結果が得られます。

4

1 に答える 1

4

ファイル内のsubprocess位置は増加しません。2番目のステートメントでlog.tell()戻ります。の位置をファイルの最後まで増やすことができます。そして、それは最初のために良いようです。私のために以下の作品:0withlogwait()Process

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)
于 2012-12-11T14:19:15.667 に答える