Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,冒充stdin_Python_Version Control_Stdin_Pipe - Fatal编程技术网

Python,冒充stdin

Python,冒充stdin,python,version-control,stdin,pipe,Python,Version Control,Stdin,Pipe,我目前正在用python编写一个关于DARC的抽象,但是一旦我试图向我的存储库发送数据,存储库就会请求一个密钥;我在想,是否有可能让python向DARC发送密钥,使用stdin或其他任何东西来模拟用户输入的内容,因为这样做;我可以允许用户简单地存储一个包含信息的文件,python只需读取该文件并释放其内容 def execute(cmd): proc = subprocess.Popen(cmd, shell=True) proc.wait() 是我用来启动DARC的代码;执

我目前正在用python编写一个关于DARC的抽象,但是一旦我试图向我的存储库发送数据,存储库就会请求一个密钥;我在想,是否有可能让python向DARC发送密钥,使用stdin或其他任何东西来模拟用户输入的内容,因为这样做;我可以允许用户简单地存储一个包含信息的文件,python只需读取该文件并释放其内容

def execute(cmd):
    proc = subprocess.Popen(cmd, shell=True)
    proc.wait()
是我用来启动DARC的代码;执行(“DARC%s”%(parems))

使用:

子流程
模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码

该方法用于通信:

Popen.communication(输入=无)

与进程交互:向stdin发送数据。从stdout和stderr读取数据,直到到达文件末尾。等待进程终止可选输入参数应该是要发送到子进程的字符串,如果不应该向子进程发送数据,则应该是“无”

communicate()返回一个元组(stdoutdata、stderrdata)

请注意,如果要将数据发送到进程的stdin,则需要使用
stdin=PIPE
创建Popen对象。类似地,要在结果元组中获得除None之外的任何内容,还需要给出
stdout=PIPE
和/或
stderr=PIPE

使用:

子流程
模块允许您生成新流程,连接到它们的输入/输出/错误管道,并获取它们的返回代码

该方法用于通信:

Popen.communication(输入=无)

与进程交互:向stdin发送数据。从stdout和stderr读取数据,直到到达文件末尾。等待进程终止可选输入参数应该是要发送到子进程的字符串,如果不应该向子进程发送数据,则应该是“无”

communicate()返回一个元组(stdoutdata、stderrdata)

请注意,如果要将数据发送到进程的stdin,则需要使用
stdin=PIPE
创建Popen对象。类似地,要在结果元组中获得除None之外的任何内容,还需要给出
stdout=PIPE
和/或
stderr=PIPE


请尝试
pexpect
,它正是为此目的而构建的(自动化其他交互式应用程序)

见:

文档中的使用示例:

   import pexpect
   child = pexpect.spawn ('ftp ftp.openbsd.org')
   child.expect ('Name .*: ')
   child.sendline ('anonymous')
   child.expect ('Password:')
   child.sendline ('noah@example.com')
   child.expect ('ftp> ')
   child.sendline ('cd pub')
   child.expect('ftp> ')
   child.sendline ('get ls-lR.gz')
   child.expect('ftp> ')
   child.sendline ('bye')

请尝试
pexpect
,它正是为此目的而构建的(自动化其他交互式应用程序)

见:

文档中的使用示例:

   import pexpect
   child = pexpect.spawn ('ftp ftp.openbsd.org')
   child.expect ('Name .*: ')
   child.sendline ('anonymous')
   child.expect ('Password:')
   child.sendline ('noah@example.com')
   child.expect ('ftp> ')
   child.sendline ('cd pub')
   child.expect('ftp> ')
   child.sendline ('get ls-lR.gz')
   child.expect('ftp> ')
   child.sendline ('bye')


你们如何启动DARC?通过subprocess?subprocess.Popen(command,shell=True)-是的,确实如此,您在这方面做了多少?您是否正在使用
stdin=subprocess.PIPE
.communicate()
?给我们看看你的代码。@Skeen:请用所有事实更新你的问题。请发布足够的代码,我们可以看到你在做什么。不远的地方,实际上没有地方,我有点放弃尝试的东西;我考虑过一些烟斗的东西,但我不知道怎么做因此,我来到这里,几乎只是在寻找一种开始的方式;你提到的两个项目中哪一个是最好的,在你看来,他们的优点和缺点是什么。你是如何启动DARC的?通过subprocess?subprocess.Popen(command,shell=True)-是的,确实如此,您在这方面做了多少?您是否正在使用
stdin=subprocess.PIPE
.communicate()
?给我们看看你的代码。@Skeen:请用所有事实更新你的问题。请发布足够的代码,我们可以看到你在做什么。不远的地方,实际上没有地方,我有点放弃尝试的东西;我考虑过一些烟斗的东西,但我不知道怎么做因此,我来到这里,几乎只是在寻找一种开始的方式;你提到的两个中哪一个是最好的,在你看来,他们的长处和短处是什么。这似乎真的是我想要的:)-我猜expect只是在stdout上听?而sendline只是提供stdin?是的,它将stdin/stdout的所有细节抽象到您的子进程。Windows?哦您应该在问题中澄清这一点,并添加一个“windows”标记。您可以这样说,但我正在尝试独立于平台,因此我使用python。:)这真的像是我要找的:)-我猜expect只是在stdout上听?而sendline只是提供stdin?是的,它将stdin/stdout的所有细节抽象到您的子进程。Windows?哦您应该在问题中澄清这一点,并添加一个“windows”标记。您可以这样说,但我正在尝试独立于平台,因此我使用python。:)我正在使用该模块创建流程,但是,我不确定如何准确连接管道。我认为这将是我的解决方案:)@Skeen,很有趣。这是一个非常简单的解决方案,大多数人认为你需要从最初的问题中得到预期。谢谢很高兴你的问题得到了解决。事实上,我曾尝试使用pexports,但是没有windows支持。我正在使用该模块创建进程,但是,我不确定如何准确连接管道。我认为这将是我的解决方案:)@Skeen,有趣。这是一个非常简单的解决方案,大多数人认为你需要从你最初的问题中得到预期的结果。谢谢很高兴你的问题解决了。实际上我试过使用pexports,但是没有windows支持