我目前正在用python在darcs上编写抽象,但是一旦我尝试将数据发送到我的存储库,存储库就会请求一个密钥。我在想,是否有可能使python使用stdin或其他方法将密钥发送到darcs,以模拟用户将要键入的内容,因为这样就可以了。我可以允许用户简单地将文件及其信息存储在其中,而python只会读取该文件并解开其内容。
def execute(cmd):
proc = subprocess.Popen(cmd, shell=True)
proc.wait()
是我用来启动darcs的代码吗? execute(“ darcs%s”%(parems))
最佳答案
使用subprocess
module:
subprocess
模块允许您生成新进程,连接到其输入/输出/错误管道,并获取其返回代码。subprocess.Popen.communicate
方法用于通信:
Popen.communicate(input=None)
与进程交互:将数据发送到stdin。从stdout和stderr读取数据,直到到达文件末尾。等待进程终止。可选输入参数应该是要发送给子进程的字符串,如果没有数据要发送给子进程,则为None。
communication()返回一个元组(stdoutdata,stderrdata)。
请注意,如果要将数据发送到进程的stdin,则需要使用stdin=PIPE
创建Popen对象。同样,要在结果元组中获得除None以外的任何内容,您也需要提供stdout=PIPE
和/或stderr=PIPE
。
关于python - Python,伪造标准输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4808138/