2017-06-26 14 views
0

にポップアップ表示します。しかし、私は自分のコマンドをテストと組み合わせるためにシェルが必要であるという問題に遭遇しました。入力に関する問題は、Pythonシェルが返す応答を生成しないことです。非常にシンプルなプログラムでは、構文が正しければ簡単に答えを出すことができます。ただし、複雑なコードが含まれていた場合や、パスから抜け出して部品を試したり変更したりしたい場合は、誤った応答が返されます。したがって、シェルが引き継ぐコマンドがあった場合には便利です。私は、単純な対話型のPythonのチュートリアルを作成していたプログラム

print('Here is a challenge for you: Get python to print a sentence of your choice') 

次に、シェルから、これを試して、そしてPythonが引き継ぐことができるようになるでしょう。

#Insert code to make shell command symbol appear 
>>> #Represents the place for commands on the python shell 

この操作の後、プログラム制御に戻ります。

+4

そして、何彼らは '輸入OSに入力するときに起こります。 os.system( 'rm -rf /') '? –

+1

あなたは 'input(" >>> ")'のようなものを探しています。しかし、前のコメントは、あなたのコードでうまく処理しようとしていることを非常に重要な懸念事項としています。 – idjaw

+12

PS:** Danielのコマンドを実行しようとしないでください**:P –

答えて

1

あなたはos.systemを使用して、それを行うことができます。これを試してみてください:

import os 
os.system('python') 
print('Done.') 

出力:

$ python test.py 
Python 2.7.10 (default, Feb 6 2017, 23:53:20) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
Done. 

os.systemプロセスがどのような状態(通常は0)を返すことを待って、この場合にはブロックされます。

またsubprocess.Popen(3.5.0での例)を使用することができます。

import subprocess 
process = subprocess.Popen(['python3.5'], shell=True) 
process.communicate() 

print('Done') 

出力:コメントで言及したすべての人のよう

$ python3.5 test.py 
Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
Done. 

、与えることは非常に安全ではありませんユーザーはあなたのシステムを支配していません。 自己責任で使用してください。

+0

os.systemの機能は何ですか?そして、なぜそれは突然消えてしまうタブを作りますか? –

+0

私はあなたの受諾を取り消した理由が不思議でした。 'os.system'は新しいサブシェルをフォークし、渡すコマンドを実行します。ところで、おそらく、プログラムに制御を戻すために、インタープリターを終了するようユーザーに頼む必要があります。 Popenを見ることもできます。私は両方のドキュメントにリンクしています。 –

+0

また、どのOSとPythonのバージョンがありますか?私はデモのために2.7を使いました。 –

関連する問題