IDLEインタラクティブシェル内からPythonスクリプトを実行するにはどうすればよいですか?
以下はエラーをスローします。
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
IDLEシェルウィンドウに入力していて、それが機能しない可能性があります。
IDLEインタラクティブシェル内からPythonスクリプトを実行するにはどうすればよいですか?
以下はエラーをスローします。
>>> python helloworld.py
SyntaxError: invalid syntax
python helloworld.py
IDLEシェルウィンドウに入力していて、それが機能しない可能性があります。
回答:
Python3:
exec(open('helloworld.py').read())
ファイルが同じディレクトリにない場合:
exec(open('./app/filename.py').read())
グローバル/ローカル変数の受け渡しについては、https://stackoverflow.com/a/437857/739577を参照してください。
非推奨のPythonバージョン
Python2 組み込み関数:execfile
execfile('helloworld.py')
通常、引数を指定して呼び出すことはできません。しかし、これは回避策です:
import sys
sys.argv = ['helloworld.py', 'arg'] # argv[0] should still be the script name
execfile('helloworld.py')
2.6以降非推奨:popen
import os
os.popen('python helloworld.py') # Just run the program
os.popen('python helloworld.py').read() # Also gets you the stdout
引数あり:
os.popen('python helloworld.py arg').read()
事前使用:サブプロセス
import subprocess
subprocess.call(['python', 'helloworld.py']) # Just run the program
subprocess.check_output(['python', 'helloworld.py']) # Also gets you the stdout
引数あり:
subprocess.call(['python', 'helloworld.py', 'arg'])
詳細はドキュメントを読んでください:-)
この基本でテスト済みhelloworld.py
:
import sys
if len(sys.argv) > 1:
print(sys.argv[1])
exec
Python3用に追加
IDLEシェルウィンドウは、ターミナルシェルと同じではありません(実行中sh
またはなどbash
)。むしろ、Pythonインタラクティブインタープリター(python -i
)にいるようなものです。IDLEでスクリプトを実行する最も簡単な方法はOpen
、File
メニューからコマンドを使用することです(これは実行しているプラットフォームによって少し異なる場合があります)、スクリプトファイルをIDLEエディターウィンドウにロードしてから、Run
-> Run Module
コマンド(ショートカットF5)。
sys.argv
、たとえば通常のif __name__ == "__main__"
ボイラープレートの下など、プログラムの最初に手動で初期化することです。
Run
-> Run with Customized...
コマンド(ショートカットShift + F5)を使用すると、引数を指定できるポップアップが開きます。残念ながら現在はそれらを記憶していないので、実行するたびに貼り付けます。
execFile('helloworld.py')
私のために仕事をします。注意すべきことは、.pyファイルがPythonフォルダー自体にない場合は、完全なディレクトリ名を入力することです(Windowsでは少なくともこれが当てはまります)。
例えば、 execFile('C:/helloworld.py')
例えば:
import subprocess
subprocess.call("C:\helloworld.py")
subprocess.call(["python", "-h"])
subprocess.call(r'c:\path\to\something.py')
私にはうまくいきません。OSError:[WinError 193]%1は有効なWin32アプリケーションではありません
IdleなどのPythonシェルまたはDjangoシェルでPythonスクリプトを実行するには、exec()関数を使用して次のように実行できます。Exec()は、コードオブジェクト引数を実行します。Pythonのコードオブジェクトは、単にコンパイルされたPythonコードです。したがって、まずスクリプトファイルをコンパイルしてから、exec()を使用して実行する必要があります。あなたのシェルから:
>>>file_to_compile = open('/path/to/your/file.py').read() >>>code_object = compile(file_to_compile, '<string>', 'exec') >>>exec(code_object)
私はこれをテストしました、そしてそれはちょっとうまくいきます:
exec(open('filename').read()) # Don't forget to put the filename between ' '
Windows環境では、次の構文でPython3シェルコマンドラインでpyファイルを実行できます。
exec(open( 'file_nameへの絶対パス').read())
以下は、Pythonシェルコマンドラインから単純なhelloworld.pyファイルを実行する方法を説明しています
ファイルの場所:C:/Users/testuser/testfolder/helloworld.py
ファイルの内容:print( "hello world")
このファイルは、Python3.7 Shellで次のように実行できます。
>>> import os
>>> abs_path = 'C://Users/testuser/testfolder'
>>> os.chdir(abs_path)
>>> os.getcwd()
'C:\\Users\\testuser\\testfolder'
>>> exec(open("helloworld.py").read())
hello world
>>> exec(open("C:\\Users\\testuser\\testfolder\\helloworld.py").read())
hello world
>>> os.path.abspath("helloworld.py")
'C:\\Users\\testuser\\testfolder\\helloworld.py'
>>> import helloworld
hello world
もう1つの選択肢があります(Windowsの場合)-
import os
os.system('py "<path of program with extension>"')
helloworld.py
感じ?