0

サブプロセスに関する python ドキュメントを読みましたが、の引数は引数preexec_fnsubprocess.Popenない関数のみを指すことができます。

グローバル変数を使用しようとしましたが、機能しpreexec_fnません。

どうやってやるの?

4

2 に答える 2

3

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!
于 2012-08-31T05:51:55.930 に答える
0

ターゲット関数が十分に単純な場合は、無名関数 (「ラムダ関数」) を試すことができます。そして、このラムダ関数をそのまま、または関数オブジェクトとして配置することができ、(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))

于 2016-05-28T01:45:52.550 に答える