首页 > 解决方案 > 如何从python中的文本文件中打印特定行

问题描述

我已经编写了代码,可以让我在行中写入数字,但是现在,在我得到的所有数字中,我必须进行比较。打印可以被 2 整除的那些到目前为止,这就是我得到的:

i = 0
x = 1
y = 0
z = 20
My_file = open("Numbers", 'w')
while i < z:
    My_file.write(str(x))
    My_file.write("\n")
    x = x + 1
    i = i + 1
My_file.close()
i = 0
My_file = open("Numbers", 'r')
for line in My_file:
    if int(My_file.readline(y)) % 2 == 0:
        print(My_file.readline(y))
    y = y + 1

最重要的部分工作,我的问题是一个int(My_file.readline(y)) % 2 == 0废话,它说:

invalid literal for int() with base 10: ''.

标签: pythontext-files

解决方案


根据以前的答案,这是一个完整的示例:

start_value = 1
max_value = 12
filename = "numbers"

with open(filename, "w") as my_file:
    value = start_value
    while value <= max_value:
        my_file.write(f"{value}\n")
        value += 1

with open(filename, "r") as my_file:
    lines = my_file.readlines()

for line in lines:
    line = line.strip()
    if int(line) % 2 == 0:
        print(line)

此代码使用 python 的“上下文管理器”(with关键字)。与 一起使用open(),它可以很好地处理文件的关闭。

您的错误来自\n每个数字末尾的 a。str从to的转换int不起作用,因为解释器无法找到如何转换此字符。

作为一个好习惯,使用有意义的变量名称,当你在这里提问时更是如此:它可以帮助人们更快地理解代码。


推荐阅读