从文件中读取特定行
问题描述:
从文件中只读取特定行(基于匹配文本)的最佳方式是什么?这是我现在在做什么:一个从文件中读取特定行
match_txt = "lhcb"
for inFile in os.listdir('.'):
readFile = open(inFile, 'r')
lines = readFile.readlines()
readFile.close()
for line in lines:
if line.find(match_txt)==0:
#< do stuff here >
即我读台词,只能用“LHCb的”在里面,从本目录中的一个的所有文件。这是做这件事的最好方法吗?可以在不首先将整个文件加载到内存中的情况下完成吗?
答
你应该看看str.startswith()函数。
if line.startswith("text"):
+0
我其实一开始并没有注意到这个检查仅仅是在这行开头的`match_txt`,所以给你+1 ! – 2011-02-13 23:29:00
答
要做到这一点,而无需加载整个文件到内存中,只需遍历文件:
match_txt = "lhcb"
for file_name in os.listdir('.'):
with open(file_name) as f:
for line in f:
if line.startswith(match_txt):
#< do stuff here >
如果你想在该行的任何地方以检查match_txt
,你可以使用
if match_txt in line:
您的示例代码等同于检查行是否以match_txt
开头。
如果您使用的是很旧的Python版本不具有的with
语句,你必须手动关闭该文件:[只读特定行(Python中的
match_txt = "lhcb"
for file_name in os.listdir('.'):
f = open(file_name)
for line in f:
if line.startswith(match_txt):
#< do stuff here >
f.close()
可能重复)](http://stackoverflow.com/questions/2081836/reading-specific-lines-only-python) – 2011-02-14 03:39:26
最好的方法?从搜索开始。 http://stackoverflow.com/questions/2081836/reading-specific-lines-only-python – 2011-02-14 03:39:43