如何让python shell'>>>'符号弹出一个程序

时间:2017-06-26 14:45:23

标签: python shell interactive

我正在创建一个简单的交互式python教程。但我遇到了一个问题,我需要shell将我的命令与他们的测试结合起来。输入的问题是它们不会产生python shell的响应。使用非常简单的程序,如果语法正确,我很容易就能得出答案。但是,如果确实涉及复杂的代码或用户想要偏离路径并试验或更改部件,则会产生错误的响应。因此,如果有一个命令让shell接管它将会很有用。

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

然后从shell中,它会让用户有机会尝试这个,并让python接管。

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

完成此操作后,它将返回程序控件。

1 个答案:

答案 0 :(得分:0)

您可以使用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.

正如评论中提到的每个人一样,让用户肆无忌惮地统治你的系统是非常不安全的。 使用风险自负。