Rob*_*y18 4 python file python-2.7
我一直试图编写一些"游戏"来帮助其他人学习python,但是在我跳出头脑风暴阶段之后我就碰到了一堵墙.请参阅,它涉及使脚本打开另一个脚本,然后向其插入输入.例如:
username = raw_input('Insert username:')
password = raw_input('Insert password:')
if username == user:
if password == 1234:
print('Congratulations, you cracked it!')
Run Code Online (Sandbox Code Playgroud)
这将是我的源代码.然后我会有另一个代码,在其中我写了一些东西来打开前一个脚本,插入"user"就像我在命令提示符下自己键入它一样,然后尝试插入0之间的每个数字,比如说,10000.所以类似于:
for n in range(0, 10000)
[Insert script to open file]
[input 'user']
[input n]
Run Code Online (Sandbox Code Playgroud)
我将如何继续编写最后一部分代码?
该subprocess模块允许您运行另一个程序 - 包括脚本 - 并控制其输入和输出.例如:
import subprocess, sys
p = subprocess.Popen([sys.executable, 'thescript.py'], stdin=subprocess.PIPE)
p.stdin.write('user\n')
p.stdin.write('{}\n'.format(n))
p.wait()
Run Code Online (Sandbox Code Playgroud)
如果您可以一次构建所有输入并将其作为单个字符串传递,则可以使用communicate.
如果你也想捕捉它的输出,再添PIPE了stdout.
import subprocess
p = subprocess.Popen(['python', 'thescript.py'],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = p.communicate('user\n{}\n'.format(n))
Run Code Online (Sandbox Code Playgroud)
有关其工作原理的详细信息,请阅读文档; 这一切都解释得很好.(但是,它没有完美组织 ;您可能想要阅读开头部分,然后跳到"替换旧函数",然后阅读"常用参数",然后回到顶部并按顺序完成.)
如果你需要以比"发送所有输入,然后获得所有输出"更复杂的方式与它进行交互,这很难正确完成,所以你应该看一下第三方pexpect模块.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |