2 Списка, цикл и логин - PullRequest
       13

2 Списка, цикл и логин

0 голосов
/ 06 января 2011

У меня есть два списка, один из идентификаторов пользователя и один из паролей.У меня уже есть сценарий, который входит на веб-сайт и очищает данные, которые мне нужны ...

#!/usr/bin/env python
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import easygui

br = Browser()
hid = easygui.enterbox (msg="Enter Hotel ID", title="HID", default="", strip=True)
pwd = easygui.enterbox (msg="Enter Password", title="HID", default="", strip=True)
url = "http://example.com"
page = br.open(url)
#Select form on front page, input values and submit
br.select_form(nr=0)
br["UN"] = hid
br["txtID"] = pwd
results = br.submit().read()

#Printing XML results to a file by appending
myfile = open('C:\\Python\\xml\\output.xml','a')
myfile.write(results)
myfile.close()

#Printing txt results to a file by appending
myfile = open('C:\\Python\\xml\\output.txt','a')
myfile.write(results)
myfile.close()

Поэтому я ввожу данные для входа в систему и пароль, когда easygui дает мне приглашение сделать это.Если я храню все пароли в двух списках ...

userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml']
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf']

Я попытался использовать целочисленный цикл, чтобы импортировать значения по одному для каждой итерации цикла, и я пытался безуспех.Я искал некоторую помощь и учебники о том, как я могу это сделать, но ничего, что, кажется, не соответствует моим конкретным потребностям.Может кто-нибудь указать мне правильное направление или предложить, какой код я могу использовать для реализации этой функции.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Если вы хотите убедиться, что пароль, который вводит пользователь, правильный, вам лучше хранить его в словаре, как показано ниже Вам нужно будет заполнить оставшуюся часть словаря, куда я положил ....

passwords = { '254376xml': 'mbhg934uh', '254371xml': 'hj2r93kh8s', ... }
def check_password(username, password):
  if username not in passwords:
    return False # username not found
  return password == passwords[username] # check the password is correct

Тогда назовите это так:

>>> check_password('254371xml', 'hj2r93kh8s') # correct password
True
>>> check_password('254371xml', 'wrong') # wrong password
False
>>> check_password('non-existant', 'wrong') # non-existant user
False
1 голос
/ 06 января 2011

Я не уверен, что полностью понимаю ваши требования.Вы хотите выполнять итерацию по обоим спискам параллельно, извлекая соответствующие пары имя пользователя / пароль в каждой итерации?

Если это так, то

userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml']
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf']
for username, password in zip(userlist, pwordlist):
    print "Username:", username, " - Password:", password
print "Done!"

должно сделать.

Ноесли вы спрашиваете, существует ли лучшая структура данных для этого, я рекомендую словарное решение marcog.

0 голосов
/ 06 января 2011

Я думаю, что вы пытаетесь достичь этого (Код взят из других ответов)

#!/usr/bin/env python
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import easygui

br = Browser()
userlist = ['254376xml', '254371xml', '245157xml', '244829xml', '242404xml', '238153xml', '235884xml', '28551xml']
pwordlist = ['mbhg934uh', 'hj2r93kh8s', 'mhg90wihf', 'ng0218hkd', 'nb029hkegh', 'bng0219hk', 'mg029k03g', 'mntg0ohwf']

for username, password in zip(userlist, pwordlist):

    url = "http://example.com"
    page = br.open(url)
    #Select form on front page, input values and submit
    br.select_form(nr=0)
    br["UN"] = username
    br["txtID"] = password
    results = br.submit().read()

    #Printing XML results to a file by appending
    myfile = open('C:\\Python\\xml\\output.xml','a')
    myfile.write(results)
    myfile.close()

    #Printing txt results to a file by appending
    myfile = open('C:\\Python\\xml\\output.txt','a')
    myfile.write(results)
    myfile.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...