我正在阅读一个> 10,000行的文本文件.
results_file = open("Region_11_1_micron_o", 'r')
Run Code Online (Sandbox Code Playgroud)
我想在特定字符串"chart"之后跳转到文件中的行,该字符串出现在第no行附近.7000(不同文件不同).有没有办法方便地做到这一点,而无需阅读文件的每一行?
如果您知道精确的行号,那么您可以使用python的linecache模块来读取特定的行.您无需打开该文件.
import linecache
line = linecache.getline("test.txt", 3)
print(line)
Run Code Online (Sandbox Code Playgroud)
输出:
chart
Run Code Online (Sandbox Code Playgroud)
如果你想从那一行开始阅读,你可以使用islice.
from itertools import islice
with open('test.txt','r') as f:
for line in islice(f, 3, None):
print(line)
Run Code Online (Sandbox Code Playgroud)
输出:
chart
dang!
It
Works
Run Code Online (Sandbox Code Playgroud)
如果您不知道精确的行号并想要在包含该特定字符串的行之后开始,请使用另一个for循环.
with open('test.txt','r') as f:
for line in f:
if "chart" in line:
for line in f:
# Do your job
print(line)
Run Code Online (Sandbox Code Playgroud)
输出:
dang!
It
Works
Run Code Online (Sandbox Code Playgroud)
test.txt 包含:
hello
world!
chart
dang!
It
Works
Run Code Online (Sandbox Code Playgroud)
我认为您不能直接跳到特定的行号.如果你想这样做,那么肯定你必须通过文件并以某种格式或其他格式存储行.在任何情况下,您都需要至少遍历文件一次.