サブプロセスに関する python ドキュメントを読みましたが、の引数は引数preexec_fn
のsubprocess.Popen
ない関数のみを指すことができます。
グローバル変数を使用しようとしましたが、機能しpreexec_fn
ません。
どうやってやるの?
サブプロセスに関する python ドキュメントを読みましたが、の引数は引数preexec_fn
のsubprocess.Popen
ない関数のみを指すことができます。
グローバル変数を使用しようとしましたが、機能しpreexec_fn
ません。
どうやってやるの?
functools.partial
またはlambda
:を使用して引数を渡すことができます。
>>> import functools
>>> def need_two_arguments(a,b):
... print a + b
...
>>> no_arguments_needed = functools.partial(need_two_arguments, "Hello, ", "World!")
>>> no_arguments_needed()
Hello, World!
>>> no_arguments_needed = (lambda: need_two_arguments("Hello, ", "World!"))
>>> no_arguments_needed()
Hello, World!
ターゲット関数が十分に単純な場合は、無名関数 (「ラムダ関数」) を試すことができます。そして、このラムダ関数をそのまま、または関数オブジェクトとして配置することができ、(ex)f=lambda x,y: x+y
「functools」パッケージを部分的に使用したり、インポートしたりする必要はありません。(ところで、部分のみを使用したい場合は、'from functools import partial'
部分をローカル関数としてクリーンアップして直接使用することもできます。
<example with anonymous function>
import subprocess
subprocess.Popen(<cmd>, preexec_fn=(lambda x,y:x+y))