どのようにIDLE対話シェルからPythonスクリプトを実行するには?

IDLE対話シェル内からPythonスクリプトを実行するにはどうすればよいですか?

次のエラーが発生します。

>>> python helloworld.py
SyntaxError: invalid syntax
66
ええ、それは何かが間違っていることを意味しますyoure code post youre code!
追加された 著者 Serial,
あなたの質問に正しく答えるなら、あなたはNed Deilyからの答えを受け入れるべきです。これは、仲間の開発者が正しい答えをすばやく見つけるのにも役立ちます。
追加された 著者 darth_coder,
helloworld.py の外観はどうですか?
追加された 著者 TerryA,
いいえ、必須ではありません。 OPがIDLEシェルウィンドウで python helloworld.py と入力しても動作しない可能性があります。
追加された 著者 Ned Deily,
それは標準的な通訳では機能しません。この問題は、人がインタプリタプロンプトがコマンドラインプロンプトであると誤って考える前に発生しています。
追加された 著者 Terry Jan Reedy,
最も簡単な方法: python -i helloworld.pypython3
追加された 著者 Leonard,

11 答え

Built-in function: execfile

execfile('helloworld.py')

通常、引数で呼び出すことはできません。しかし、回避策があります:

import sys
sys.argv = ['helloworld.py', 'arg']  # argv[0] should still be the script name
execfile('helloworld.py')

Deprecated since 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()

Advance usage: subprocess

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'])

詳細はdocsを読んでください:-)


この基本的な helloworld.py でテストされました:

import sys
if len(sys.argv) > 1:
    print(sys.argv[1])
93
追加された
コマンドライン引数を含むサンプルも追加できますか?
追加された 著者 ViFI,

あなたはpython3でこれを使うことができます:

exec(open(filename).read())
22
追加された
これは美しく働いた。
追加された 著者 Leonard,

The IDLE shell window is not the same as a terminal shell (e.g. running sh or bash). Rather, it is just like being in the Python interactive interpreter (python -i). The easiest way to run a script in IDLE is to use the Open command from the File menu (this may vary a bit depending on which platform you are running) to load your script file into an IDLE editor window and then use the Run -> Run Module command (shortcut F5).

20
追加された
残念ながら、いいえ、コマンドライン引数を渡しながらIDLEでPythonファイルを実行するのは簡単ではありません。 IDLEがこれを行うには長い間オープンな問題があります( bugs.python.org/issue5680 )。 。テストのための1つの回避策は、プログラムの初めに、たとえば通常の if __name__ == "__main __" の定型文の下で手動で sys.argv を初期化することです。
追加された 著者 Ned Deily,
この答えは、IDLEシェルを使用してPythonスクリプトを実行できない理由を明確にしています。ありがとう@NedDeily
追加された 著者 arsho,
しかし、議論を引き渡すことはできません。 :(
追加された 著者 Erica Kane,

これを試して

import os
import subprocess

DIR = os.path.join('C:\\', 'Users', 'Sergey', 'Desktop', 'helloword.py')

subprocess.call(['python', DIR])
5
追加された

execFile('helloworld.py') does the job for me. A thing to note is to enter the complete directory name of the .py file if it isnt in the Python folder itself (atleast this is the case on Windows)

For example, execFile('C:/helloworld.py')

4
追加された

例えば:

import subprocess

subprocess.call("C:\helloworld.py")

subprocess.call(["python", "-h"])
2
追加された
subprocess.call(r'c:\ path \ to \ something.py ')は私のためには機能しません。 OSError:[WinError 193]%1は有効なWin32アプリケーションではありません
追加された 著者 Terry Jan Reedy,
このimport os importサブプロセスを試してください。DIR = os.path.join( 'C:\\'、 'Users'、 'Sergey'、 'Desktop'、 'a.py')subprocess.call(['python'、DIR] )
追加された 著者 Sergey Nosov,

IdleやDjangoシェルなどのPythonシェルでPythonスクリプトを実行するには、exec()関数を使用して次の処理を実行できます。 Exec()はコードオブジェクトの引数を実行します。 Pythonのコードオブジェクトは単純にコンパイルされたPythonコードです。したがって、まずスクリプトファイルをコンパイルしてからexec()を使用して実行する必要があります。あなたのシェルから:

>>>file_to_compile = open('/path/to/your/file.py').read()
>>>code_object = compile(file_to_compile, '', 'exec')
>>>exec(code_object)

私はPython 3.4を使用しています。 コンパイルexec ドキュメントを参照してください。

1
追加された

簡単な方法

python -i helloworld.py  #Python 2

python3 -i helloworld.py #Python 3
0
追加された

私はこれをテストし、それはちょっとうまくいく:

exec(open('filename').read())  # Don't forget to put the filename between ' '
0
追加された
引用符のおかげで、これは私のために働いた。 Upvoted。
追加された 著者 CppLearner,

Python 3では、 execFile はありません。 exec の組み込み関数を使用できます、 例えば:

import helloworld
exec('helloworld')
0
追加された

アイドルでは、次の作品: -

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

import helloworld
</div> </div>

なぜ私はそれが動作するのか分からないが、それは..

0
追加された
あなたがやっていることは、シェルから走っていないモジュールをロードすることです。 1つのモジュールのモジュール名の読み込み<�名前> __ =ファイル名2)シェルモジュール名 _name __ = " _main "からの実行
追加された 著者 tanweer alam,