如何在python中打开文件并向其中插入一个或多个输入?

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)

我将如何继续编写最后一部分代码?

aba*_*ert 6

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.

如果你也想捕捉它的输出,再添PIPEstdout.

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模块.