Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.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 为子流程调用提供输入_Python - Fatal编程技术网

Python 为子流程调用提供输入

Python 为子流程调用提供输入,python,Python,我正在运行一个命令来调用pscp.exe,以便在主机之间传输一些文件。我正在使用子流程模块执行pscp.exe。以下是代码示例: command = 'pscp -i {} {}@{}:/files/{} {}'\ .format(privkey, username, server, file_remote_name, file_local_name) log(logger, "Command to run: {}".format(comm

我正在运行一个命令来调用pscp.exe,以便在主机之间传输一些文件。我正在使用子流程模块执行pscp.exe。以下是代码示例:

command = 'pscp -i {} {}@{}:/files/{} {}'\
                .format(privkey, username, server, file_remote_name, file_local_name)
            log(logger, "Command to run: {}".format(command), logging.DEBUG)
            ret_code = subprocess.call(args=command, shell=False)
            if ret_code == 0:
                return True
            else:
                return False
第一次运行时,pscp.exe会提示接受主机密钥。我阅读了putty文档,但没有找到任何自动接受密钥的选项。因此,在第一次运行时,我必须手动按下“y”键。这在我的prod环境中是不可能的,因为它完全由Saltstack管理,并且我不希望有任何人工交互。那么,如何修改程序以将“y”键发送到pscp进程


PS:我知道在另一个问题中,人们建议在pscp命令前面加上“echo y |”。但它似乎不适用于subprocess.call()函数。我用错了吗

这回答了你的问题吗
if-expr:return-True-else:return-False应写成
return-expr
。阅读
子流程的文档。调用
以了解
shell
参数的实际功能。这是否回答了您的问题
if-expr:return-True-else:return-False应写成
return-expr
。并且,阅读
子流程的文档。调用
以了解
shell
参数的实际作用。