Rip*_*Oil 4 python loops file python-3.x
我正在尝试从 python 中的文本文件中打印两行文本,它们在单独的行上彼此相邻。所以文本文件看起来像这样:
Apples
Oranges
Pears
Lemons
Run Code Online (Sandbox Code Playgroud)
如果有人输入苹果,我希望程序打印出来:
Apples
Oranges
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
file = open('Fruit.txt',"r")
for line in file:
if InputText in line:
print(line)
print(line+1)
return
file.close()
Run Code Online (Sandbox Code Playgroud)
当然,该变量line+1不正确,但我将其留在那里是为了说明还必须打印下一行文本。
您应该考虑更改代码中的一些内容以使其正常工作。从顶部开始:
考虑在语句中使用您打开的文件作为上下文管理器with。引用文档中的解释:
with处理文件对象时使用关键字是一个很好的做法。优点是文件在其套件完成后会正确关闭,即使在某个时刻引发异常也是如此。使用with也比编写等效块短得多try-finally。
您正在迭代的文件对象是一个迭代器(谁知道它是什么?)。这意味着您可以next对其应用内置函数。即使由于文件对象的惰性迭代而没有跳出循环,这也将起作用。一般来说,除非您真的知道自己在做什么,否则在循环next中调用迭代器for可能会导致非常意外的结果。
每行(可能除了最后一行)都将包含一个尾随\n字符。print通常会在它打印的字符串中附加另一个换行符。为了避免双换行符,您可以添加end=''到 的参数中print。end是一个仅关键字参数,用于确定print附加到其输出的行结尾。
您需要澄清当用户在文件最后一行输入单词时您希望发生什么:'Lemons'在您的示例中。目前使用next会报错StopIteration。您可以捕获错误,对其进行转换,或者只是在文件末尾添加一个空行以确保它不会发生。
return在模块级循环中使用是非法的。如果您的代码不在函数或方法中,则应该使用break来跳出循环,而不是return.
以下是所有内容的组合:
以 open('Fruit.txt',"r") 作为文件:
对于文件中的行:
如果输入文本在行中:
打印(行,结束='')
print(下一个(文件) , end='' )
中断
| 归档时间: |
|
| 查看次数: |
14071 次 |
| 最近记录: |