【发布时间】:2010-05-03 21:12:01
【问题描述】:
在 python 中,假设我有文件 data.txt 。其中有 6 行数据。我想通过遍历每个字符并找出文件中 '\n' 的数量来计算我计划执行的行数。如何从文件中输入一个字符? Readline 占据了整行。
【问题讨论】:
在 python 中,假设我有文件 data.txt 。其中有 6 行数据。我想通过遍历每个字符并找出文件中 '\n' 的数量来计算我计划执行的行数。如何从文件中输入一个字符? Readline 占据了整行。
【问题讨论】:
我认为您正在寻找的方法是readlines,如
lines = open("inputfilex.txt", "r").readlines()
这将为您提供文件中每一行的列表。要找出有多少行,您可以这样做:
len(lines)
然后像使用任何普通 Python 列表一样使用索引访问它,例如 lines[3] 或 lines[-1]。
【讨论】:
您可以使用read(1) 读取单个字节。 help(file) 说:
read(size)-> 最多读取 size 个字节,以字符串形式返回。如果 size 参数为负数或省略,则读取直到到达 EOF。 请注意,在非阻塞模式下,数据少于请求的数据 可能会返回,即使没有给出 size 参数。
请注意,一次读取一个字节的文件是完全不符合“Pythonic”的。这是 C 课程的标准,但 Python 可以用更少的代码完成更多的工作。例如,您可以在一行代码中将整个文件读入一个数组:
lines = f.readlines()
然后您可以通过简单的lines[lineNumber] 查找按行号进行访问。
或者,如果您不想一次将整个文件存储在内存中,您可以逐行遍历它:
for line in f:
# Do whatever you want.
这更具可读性和惯用性。
【讨论】:
对你来说似乎最简单的答案是:
for line in file:
lines += 1
# do whatever else you need to do for each line
或显式使用readline() 的等效构造。当您在上面说readline() 正确读取每一行的全部内容时,我不确定您为什么要查看每个字符。
【讨论】:
要根据文件的行访问文件,请列出其行。
with open('myfile') as f:
lines = list(f)
然后只需访问lines[3] 以获取第四行,依此类推。 (请注意,这不会去除换行符。)
linecache module 对此也很有用。
【讨论】: