私はPythonのサブプロセスに非常に奇妙な問題があります。私はそれを使用していくつかの外部exeを呼び出して、リストに出力を保持します。Pythonのサブプロセス.Popenは同じ標準出力を返しません。
この外部exeを呼び出すたびにの別の文字列が返されます。しかし、Popenを使って何度も呼び出すと、は同じ文字列を返します。 =: - O
Popenがexeを呼び出さずにstdoutから常に同じ値を返すように見えます。たぶん実際にもう一度exeを呼び出さずに何らかのキャッシュをしているかもしれません。
は、これは私のコードです:地球上で私が間違っているのは何
def get_key():
from subprocess import Popen, PIPE
args = [C_KEY_MAKER, '/26', USER_NAME, ENCRYPTION_TEMPLATE, '0', ]
process = Popen(args, stdout=PIPE)
output = process.communicate()[0].strip()
return output
if __name__ == '__main__':
print get_key() # Returns a certain string
print get_key() # Should return another string, but returns the same!
!
C_KEY_MAKERコマンドをコマンドラインで直接実行すると、何が生成されますか? –
期待どおり2つの異なる文字列。 – cfischer
@フェルナンド:実際は私には期待されていません。私は、コマンドラインアプリに適切な乱数の種があることに疑いを持っています。サブプロセスとコマンドラインバージョンの間には、環境変数の違いがいくつか存在する必要があります。 –