我正在创建一个简单的交互式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
完成此操作后,它将返回程序控件。
答案 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.
正如评论中提到的每个人一样,让用户肆无忌惮地统治你的系统是非常不安全的。 使用风险自负。