Python提示时如何发送多个字符串作为脚本的输入

时间:2018-11-21 07:21:52

标签: python

我的脚本在执行时从提示符中获取用户名和密码。我能够发送单个字符串作为输入,但是无法根据条件发送多个字符串。有人可以帮助我如何实现这一目标,或者如果有其他替代方法也可以吗?我尝试了以下方法。

import sys
import StringIO
import getpass
class ProxyDetails:
    def __init__(self,option):
        self.option = option
        self.proxy_option = self.get_web_proxy_details()
        self.call_request()
        self.parse_test()

    def get_web_proxy_details(self):
        if self.option == "Default":
            self.proxy_username = getpass.getpass("Enter Username for Proxy : ")
            self.proxy_password = getpass.getpass("Enter Password for Proxy : ")
            print "self.proxy_username is {} ".format(self.proxy_username)
            print "self.proxy_password is {} ".format(self.proxy_password)
        else:
            print("proxy is none ")

    def call_request(self):
        # this method will do API call
        pass
    def parse_test(self):
        #this method will parse the json
        pass

f1 = sys.stdin
f = StringIO.StringIO('admin')
f = StringIO.StringIO('admin123')
sys.stdin = f
obj=ProxyDetails(option="Default")
sys.stdin = f1

另一种方式

f = StringIO.StringIO('admin','\n','admin123')
sys.stdin=f

另一种方式

f = StringIO.StringIO('admin','admin123')
sys.stdin=f

1 个答案:

答案 0 :(得分:0)

  1. 您使用的getpass,默认情况下不会从stdin读取: https://docs.python.org/2/library/getpass.html
  2. f的两个分配将相互覆盖。 sys.stdin = StringIO.StringIO('admin','\n','admin123') 更有可能胜任这项工作。您可以使用stdin.read()代替getpass.getpass()进行尝试。