我需要将用户输入从命令行传递到我编写的另一个python模块中。
我编写了一个Web爬虫模块,该模块从公司Wiki收集信息,供我的主脚本使用。我正在将网络抓取工具作为模块导入到主脚本中。
问题在于,当用户执行主要功能并指示他们要运行Web抓取工具时,会提示您输入密码。即使他们在命令行上输入了密码。
在主脚本中,我要走
import argparse
import getpass
from web_scraper import web_scraper
def authenticate():
auth = get_login()
auth = str(auth).replace('(','').replace('\'','').replace(',',':').replace(')','').replace(' ','')
return auth
def arguments():
parser = argparse.ArgumentParser(description='This is a program that lists the servers in EC2')
parser.add_argument(
"-u",
"--user",
default = getpass.getuser(),
help = "Specify the username to log into Confluence")
parser.add_argument(
"-d",
"--password",
help = "Specify the user's password")
options = parser.parse_args()
return options
write_data_to_confluence(auth, html, pageid, title):
print("Stuff happens here.")
def main():
html = 'hi'
pageid = 12345678
title = 'My Title'
options = arguments()
if update_account_list.lower() == 'y':
web_scraper()
if options.password and options.user:
user = options.user
password = options.password
auth = (user, password)
write_data_to_confluence(auth, html, pageid, title)
else:
auth = authenticate()
write_data_to_confluence(auth, html, pageid, title)
在web_scraper模块中,我要走
def authenticate():
auth = get_login()
auth = str(auth).replace('(','').replace('\'','').replace(',',':').replace(')','').replace(' ','')
return auth
web_scraper():
print("I'm scaping the web!") # code for this function doesn't matter to the problem
def main():
web_scraper()
网络抓取模块是一个单独的文件,也由其他几个使用它的模块共享。
我希望用户在命令行上输入密码,然后将其传递给其他模块中的网络抓取工具。这样,用户不必两次(在命令行中一次,在程序中一次)输入密码。
我该如何实现?
答案 0 :(得分:1)
您拥有一切,只需通过函数调用传递options
...
auth = authenticate(options)
def authenticate(options):