我试图只打印具有我需要的特定字符串的行。
我这样做但我无法弄清楚出了什么问题:
def find(text):
fisier = file('catastrofa.txt')
for line in fisier:
if (text in line):
print(line)
def main():
find("David")
main()
答案 0 :(得分:3)
使用open(..)
打开文件,然后可以遍历文件处理程序(迭代文件处理程序将在逐行迭代文件时尚):
def find(text):
with open('catastrofa.txt') as fisier:
for line in fisier:
if (text in line):
print(line)
def main():
find("David")
main()
默认情况下,您打开文件的模式为'r'
,因此您读取文件(您无法写入文件),并将其作为文本阅读(不是二进制)。
请注意,文件的路径是 relative 来自当前目录(可以是python文件的目录,但有时它不是< / em>的)。
答案 1 :(得分:1)
您可以使用open打开文件,并使用readlines方法逐行迭代
def find(text):
fisier = open('catastrofa.txt')
for line in fisier.readlines():
if (text in line.strip()):
print(line)
fisier.close()
def main():
find("David")
main()
您还可以使用with
关键字的上下文管理器,保证在完成后关闭流,Willem Van Onsem已经演示了示例
答案 2 :(得分:0)
使用open(&#39; catastrofa.txt&#39;)代替文件(&#39; catastrofa.txt&#39;) 像这样:
def find(text):
fisier = open('catastrofa.txt','r')
for line in fisier:
if (text in line):
print(line)
def main():
find("David")
main()
答案 3 :(得分:0)
for line in fisier:
迭代文件中的行而不删除行结尾(通常是行返回),所以:
print(line)
将打印该行和一个空行,因此最好写一下:
with open('catastrofa.txt') as fisier:
for line in fisier:
if text in line:
print(line, end='')
以避免额外的行返回。