私はpythonを学んでいて、どうすればいいのかわからなかったというちょっとした問題に遭遇しました。簡単にするために、Main と CalledScript の 2 つのスクリプトがあるとします。Main で実行可能ファイルを開いてその pid を取得し、それを変数に割り当ててから、CalledScript.py をサブプロセスとして開き、その変数を引数として渡します。ほとんどの場合、インポートを使用する方が良いオプションであることはわかっていますが、私の場合は、プロジェクトの他の部分のためにサブプロセスとして実行する必要があります。とにかく、これを行うとエラーが発生し続けます。pidを送信しようとしたときにのみ発生します。以下の変数「thePid」に「555」などの乱数を割り当てると、問題なく機能します。CalledScript がそれを受け取り、画面に出力すれば、すべて問題ありません。しかし、それに cproc.pid を割り当てて送信しようとしてもうまくいきません。
これ以上遅れることなく、簡単なサンプル コードを次に示します。
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
どんな助けでも素晴らしいでしょう!おそらく非常に明白な質問で申し訳ありません。私はグーグルで検索しましたが、答えを見つけるのはあまり運がありませんでした! 先日pythonをいじり始めたばかりなのでまだまだ勉強中です!