我在使用Python阅读文本文件的整个特定行时遇到问题。我目前有这个:
load_profile = open('users/file.txt', "r")
read_it = load_profile.readline(1)
print read_it
当然这只会读取第一行的一个字节,这不是我想要的。我也试过谷歌但没找到任何东西。
答案 0 :(得分:14)
这条线的条件是什么?它在某个指数?它是否包含某个字符串?它与正则表达式匹配吗?
此代码将根据字符串匹配文件中的单行:
load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLine = ""
for line in read_it.splitlines():
if line == "This is the line I am looking for":
myLine = line
break
print myLine
这将为您提供文件的第一行(还有其他几种方法可以执行此操作):
load_profile = open('users/file.txt', "r")
read_it = load_profile.read().splitlines()[0]
print read_it
或者:
load_profile = open('users/file.txt', "r")
read_it = load_profile.readline()
print read_it
<强> file.readline([大小])强>
从文件中读取整行。落后 换行符保留在字符串中(但在文件时可能不存在) 以不完整的行结束)。 [6]如果size参数存在并且 非负数,它是最大字节数(包括尾随数) 换行符)可能会返回不完整的行。当大小不是0时, 仅在立即遇到EOF时才返回空字符串。
注意与stdio的fgets()不同,返回的字符串包含null 字符('\ 0'),如果它们出现在输入中。
<强> file.readlines([sizehint])强>
使用readline()读取EOF并返回 包含这样读取的行的列表。如果是可选的sizehint 论证存在,而不是读到EOF,整行 总计近似sizehint字节(可能在四舍五入后 读取内部缓冲区大小)。实现文件类的对象 如果无法实现,接口可以选择忽略sizehint, 或无法有效实施。
回答你的评论诺亚:
load_profile = open('users/file.txt', "r")
read_it = load_profile.read()
myLines = []
for line in read_it.splitlines():
# if line.startswith("Start of line..."):
# if line.endswith("...line End."):
# if line.find("SUBSTRING") > -1:
if line == "This is the line I am looking for":
myLines.append(line)
print myLines
答案 1 :(得分:2)
load_profile.readline(1)
具体说是以1
字节为上限。它并不意味着1
行。试试
read_it = load_profile.readline()
答案 2 :(得分:2)
您可以使用Python的内置模块linecache
import linecache
line = linecache.getline(filepath,linenumber)
答案 3 :(得分:1)
def readline_number_x(file,x):
for index,line in enumerate(iter(file)):
if index+1 == x: return line
return None
f = open('filename')
x = 3
line_number_x = readline_number_x(f,x) #This will return the third line