私はPythonを学んでいて、どうやってやるのか分からないという問題がありました。簡単にするために、MainとCalledScriptという2つのスクリプトがあるとしましょう。私はMainが実行可能ファイルを開き、そのPIDを取得し、それを変数に代入し、CalledScript.pyをサブプロセスとして開き、その変数を引数として渡すようにします。ほとんどの場合、インポートを使用する方が良い選択肢になることは知っていますが、私の場合、プロジェクトの他の部分のためにサブプロセスとして実行する必要があります。とにかく、私はこれを行うとエラーが発生し続ける。私はpidを送信しようとするときにのみ発生します。下の変数 "thePid"に "555"のような乱数だけを割り当てるとうまくいくはずです。 CalledScriptはそれを受け取り、それを画面に出力し、すべて正常です。しかし、cproc.pidを割り当てて送信しようとすると、うまく行きません。変数をWindows 7環境の1つのPythonスクリプトから別のPythonスクリプトに引き渡す
さらに遅延することなく、ここでは簡単なサンプルコードは次のとおりです。
Main.py
from subprocess import Popen, PIPE
import sys
import subprocess
import os
cproc = Popen("C:\Test\Test.exe", stdin=PIPE, stdout=PIPE)
thePid = cproc.pid
theproc = subprocess.Popen(['C:\\CalledScript.py', thePid], shell=True)
CalledScript.py
import sys
print "thePid is: %r" % sys.argv[1]
私は取得していますエラー:
Traceback (most recent call last):
File "main.py", line 12, in <module>
theproc = subprocess.Popen(['C:\\CalledScript.py
', cproc.pid], shell=True)
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 852, in _execute_child
args = list2cmdline(args)
File "C:\Python27\lib\subprocess.py", line 587, in list2cmdline
needquote = (" " in arg) or ("\t" in arg) or not arg
TypeError: argument of type 'int' is not iterable
どのようなヘルプが優れています!おそらく非常に明白な質問を申し訳ありません。私はGoogle上で検索したが、多くの運を持っていなかった答えを見つける!私はちょうど先日、私はまだ学んでいるので、Pythonをつまんで始めた!
を!お二人ともご協力いただきありがとうございます! –