关于列表:逐行读取txt文件-python

Read TXT file line by line - Python

本问题已经有最佳答案,请猛点这里访问。

如何让python一行一行地读取txt列表?我使用的是.readlines(),但似乎不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import itertools
import string
def guess_password(real):
    inFile = open('test.txt', 'r')
    chars = inFile.readlines()
    attempts = 0
    for password_length in range(1, 9):
        for guess in itertools.product(chars, repeat=password_length):
            attempts += 1
            guess = ''.join(guess)
            if guess == real:
                return input('password is {}. found in {} guesses.'.format(guess, attempts))
        print(guess, attempts)

print(guess_password(input("Enter password")))

test.txt文件如下:

1
2
3
4
1:password1
2:password2
3:password3
4:password4

当前程序只能使用列表中的最后一个密码(密码4)如果输入任何其他密码,它将超过列表中的所有密码并返回"无"。

所以我假设我应该告诉python一次测试一行?

ps."return input()"是一个输入,这样对话框就不会自动关闭,没有什么可以输入的。


readlines返回包含文件中所有剩余行的字符串列表。作为python文档的状态,您也可以使用list(inFile)来读取所有的ines(https://docs.python.org/3.6/tutorial/inputout.html文件对象的方法)

但您的问题是,python读取的行包括换行符(
)。只有最后一行在文件中没有换行符。所以通过比较guess == real,你可以比较'password1
' == 'password1'
,也就是False

要删除新行,请使用rstrip

1
2
chars = [line.rstrip('
'
) for line in inFile]

此行而不是:

1
chars = inFile.readlines()

首先,尝试搜索重复的文章。

如何将文件逐行读取到列表中?

例如,我在处理txt文件时通常使用的内容:

1
2
lines = [line.rstrip('
'
) for line in open('filename')]