3

どのように動作しているかをよりよく理解するために、単純な python スクリプトで別のスクリプトを呼び出そうとしています。「メイン」コードは次のようになります。

#!/usr/bin/python
import subprocess
subprocess.call('kvadrat.py')

そしてそれが呼び出すスクリプト - kvadrat.py

#!/usr/bin/python
def kvadriranje(x):
    kvadrat = x * x
    return kvadrat

print kvadriranje(5)

呼び出されたスクリプトは単独で機能しますが、「メイン」スクリプト エラーが発生します。

Traceback (most recent call last):
  File "/Users/user/Desktop/Python/General Test.py", line 5, in <module>
    subprocess.call('kvadrat.py')
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 444, in call
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 595, in __init__
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/subprocess.py", line 1106, in _execute_child
OSError: [Errno 2] No such file or directory

明らかに何かがおかしいのですが、初心者には何がわかりません。

4

3 に答える 3

3

やってみました:

from subprocess import call
call(["python","kvadrat.py"]) #if in same directory, else get abs path

ファイルがそこにあるかどうかも確認する必要があります。

import os
print os.path.exists('kvadrat.py')
于 2013-07-30T15:47:30.303 に答える
0

Subprocess.call では、ファイルが実行可能であり、パスにある必要があります。Unix システムでsubprocess.call(['./kvadrat.py'])は、現在の作業ディレクトリで kvadrat.py ファイルを実行し、kvadrat.py実行権限があることを確認するために使用できます。または、/usr/local/bin などの PATH 内のディレクトリにコピーすることもできます。そうすれば、必要に応じてどこからでも実行できます。

ほとんどの場合、サブプロセスを使用して他の python アプリケーションを実行したくはありませんが、代わりにそれらをモジュールとしてインポートするだけです...

于 2013-07-30T15:16:55.900 に答える