我的第一个.py:
def create_file(file_name):
list=["ab","cd","ef"]
for i in list:
with open(file_name, "a+") as input_file:
print(" {}".format(i), file = input_file)
我的第二个.py:
from first import create_file
def read_file(file_name):
# Create file with content
create_file(file_name)
# Now read file content
input_file = open(file_name, 'r')
for text_line in input_file:
for line in range(len(input_file)):
if "cd" in text_line :
word = (input_file[line + 1])
print(word)
read_file('ss.txt')
我无法找到
input_file
的长度。
我不知道为什么。有人可以帮助我吗?
预期输出:
ef
然后,如果第 num =2 行,我希望输出为“ef”。
你混淆了迭代文件行和使用索引访问文件行。当你用
for text_line in input_file
迭代时,
text_line
已经代表了文件中的每一行,你不能再用索引去访问它。
以下是修改后的代码,能够实现你想要的功能:
from first import create_file
def read_file(file_name, num=2):
# Create file with content
create_file(file_name)
# Now read file content
with open(file_name, 'r') as input_file:
file_lines = input_file.readlines() # 读取所有行到一个列表
if 1 <= num < len(file_lines):
print(file_lines[num].strip())
read_file('ss.txt') # 输出 "ef"
read_file('ss.txt', 1) # 输出 "cd"
解释:
-
使用
readlines()
读取所有行:readlines()
方法将文件的所有行读取到一个列表中,每个元素代表一行。 -
使用索引访问行:
现在你可以使用
file_lines[num]
来访问特定行,其中num
是行号(从0开始)。 -
错误处理:
添加了一个简单的检查,确保
num
在有效范围内,避免IndexError
。 -
strip()
去除空格: 使用strip()
方法去除每行开头和结尾的空格,使输出更干净。
现在,你可以通过修改
num
的值来获取不同行的内容。