2016-06-29 3 views
0

私は克服する方法が分かりません。私は別のpythonスクリプトを実行するために、pythonでサブプロセスを作成しようとしています。それほど難しくない。問題は、pythonファイルにスーパーロングストリングが含まれていると、EOFエラーです。Pythonのsubprocess.callと複数行の文字列EOF

ここに、私のファイルの外観の例があります。

Subprocess.py:

### call longstr.py from the primary pyfile 
subprocess.call(['python longstr.py'], shell = True) 

Longstr.py

### called from subprocess.py 
### the actual string is a lot longer; this is an example to illustrate how the string is formatted 
lngstr = """here is a really long 
string (which has many n3w line$ and "characters") 
that are causing the python file to state the file is ending early 
""" 
print lngstr 

回避策として、端末

SyntaxError: EOF while scanning triple-quoted string literal 

でプリンターエラー、私はすべての改行を削除するだけでなく、してみましたそれがマルチラインであるかどうかを確認するためにすべてのスペース。それでも同じ結果が返ってきました。

私は、サブプロセスが実行されていて、シェルがファイルの内容で何かをしているときに、新しい行に達したときにシェル自体が不安定になり、それがプロセスを終了させるということです。ファイルではありません。

サブプロセスにこのようなファイルを実行させるための正しい回避策は何ですか?

ありがとうございました。

+0

なぜ別のPythonスクリプトを別のプロセスで実行したいのですか? 'import'はもっと効率的になり、特にマルチプロセッシングを再実装しようとしているのでなければ、より制御しやすくなります。 – tripleee

+0

ファイルが動的に作成されているため、メインファイルの先頭にインポートを追加することは、ファイルを '開く 'と'書き込み'するまで実行できません。それはちょうど私がする方法を知りたいと思う何かである。 – lindsay

+0

無駄な 'shell = True'を取り除くことは、「不十分」な地球を粉砕することを少なくします。コマンドを文字列のリストに変換する必要があります。 'subprocess.call(['python'、 'longstr.py'])' – tripleee

答えて

0

ここに自分の質問に答える。私の問題は、subprocess.callを実行しようとする前にfile.close()を実行しなかったことでした。

この問題が発生し、最近書き込まれたファイルで作業している場合、これも問題になる可能性があります。このスレッドを読んだり応答したりした皆さん、ありがとう。