2013-07-29 2 views
-2

У меня проблема с перекосом в моих списках в текстовых файлах. Я что-то упускаю, но не могу понять, что это. Вот мой сценарийПроблемы с функцией цикла

user = open ('users.txt' , 'r') 
password = open ('password.txt' , 'r') 
# username = user.readline() 
password_list = password.readline() 
pa = ''.join(password_list) 


for users in user: 
    for pass_list in pa: 
     login_data = users + pass_list 
     print login_data 

Это то, что я получаю за мой выход

[email protected] 
P 
[email protected] 
a 
[email protected] 
s 
[email protected] 
s 
[email protected] 
w 
[email protected] 
o 
[email protected] 
r 
[email protected] 
d 
[email protected] 
1 
[email protected] 


[email protected] 
P 
[email protected] 
a 
[email protected] 
s 
[email protected] 
s 
[email protected] 
w 
[email protected] 
o 
[email protected] 
r 
[email protected] 
d 
[email protected] 
1 
[email protected] 

То, что я хотел бы видеть его печать является

[email protected] 
Password1 
[email protected] 
Password1 
etc ......... 
+0

Я думаю, что вы имели в виду, чтобы написать 'password_list = password.readlines()' ('не readline') –

+1

Это тоже супер дезориентирование на наличие таких строк, как 'для пользователей в пользователе:' и 'для pass_list в pa:', где имя списка похоже, что оно должно быть именем элемента в списке, и наоборот – StephenTG

ответ

0
user = open ('users.txt' , 'r') 
password = open ('password.txt' , 'r') 
username = user.readlines() 
password_list = password.readlines() 

for username in user: 
    for pass_val in password_list: 
     login_data = username+'\n'+ pass_val 
     print login_data 
0

Вы пробовали:

for users in user: 
    login_data = users + pa 
    print login_data 

Если вы не можете опубликовать фрагмент обоих пользователей. txt и password.txt?

2

Похоже, вы хотите распечатать содержимое двух списков одновременно. Вы можете использовать zip():

user = open ('users.txt' , 'r') 
password = open ('password.txt' , 'r') 
# username = user.readline() 
password_list = password.readline() 

for users, pa in zip(user, password_list): 
    login_data = users + pass_list 
    print login_data 

Что происходит с вашим кодом, что этот цикл:

for pass_list in pa: 

Переберет символы в строке pa.

3

password является файлоподобным объектом. password_list берет верхнюю строку из этого файла. pa присоединяется к этой строке с номером '' - так как эта строка является строкой, это принимает все символы один за другим, а затем соединяет их вместе ни с чем, не разделяя их, давая вам именно то, с чего вы начали. Затем вы перебираете эту строку, но итерация по строке создает каждый символ в этой строке, что именно то, что вы получаете.

Try:

with open('users.txt', 'r') as users, open('password.txt', 'r') as passwords: 
    user_data = zip(users, passwords) 
    for user, password in user_data: 
     print(user, password) 
1

Перебор строки в Python даст символы струны один за другим. Вы могли бы просто:

password_list = password.readlines() 

Это возвращает список строк, по которым вы можете легко перебирать петлю.

0

Вот решение для моего вложенного цикла делает то, что я хотел

user = open ('users.txt' , 'r') 
password = open ('password.txt' , 'r') 


for users in user: 
    for pass_list in password: 
     login_data = users + '\n' + pass_list 
     print login_data 
Смежные вопросы