基本上,我希望这个函数取一个文件名,将该文件的内容读入profile_list。我希望在调用函数时返回配置文件对象列表,但我似乎无法使其工作。任何帮助将不胜感激
def read_file(filename, profile_list):
infile = open(filename, "r")
profile_list = infile.readlines()
for i in range(len(profile_list)):
profile_list[i] = profile_list[i].rstrip('\n')
infile.close()
return profile_list
profile_list = []
read_file("profiles.txt", profiles_list)
我是初学者,我知道我在某个地方犯了错误,我只是不知道在哪里。问题是它在被叫时只是没有读任何东西。
答案 0 :(得分:0)
尝试在read_file的调用者中执行以下操作:
return_list = [] // define it a list
read_file(..., return_list)
在read_file()中,替换此行
profile_list[i] = profile_list[i].rstrip('\n')
使用:
return_list.append(profile_list[i].rstrip('\n'))
在此函数的最后,将return_list返回给调用者。
答案 1 :(得分:0)
def read_file(filename, profile_list):
infile = open(filename, "r")
profile_list = infile.readlines()
for i in range(len(profile_list)):
profile_list[i] = profile_list[i].rstrip('\n')
infile.close()
return profile_list
read_file("profiles.txt", profiles_list) # here is your only real mistake
您返回profile_list
,但如果您未将read_file(...)
的电话分配给任何内容,请立即将其丢弃。
result = read_file(...)
现在result
有您的个人资料列表。
但请注意,您打算将预先建立的列表传递给函数并将其汇总到那里。你可以这样做,但几乎肯定不是你想要做的。只需在函数定义中删除该行。
def read_file(filename):
# etc.
或者更好的是将它命名为更清晰的东西。可能read_profiles
?
此外,您可以在阅读文件时删除每一行。试试这个:
def read_profiles(fname):
# this `with` construct is better than "f = open(...); do_stuff; f.close()" ...
with open(fname) as infile:
profile_list = [line.rstrip("\n") for line in infile]
# ... because as soon as you exit the indented block, it closes for you.
# EVEN if you exit the indented block because an error happened!
return profile_list
答案 2 :(得分:0)
试试这个,
def read_file(filename):
with open(filename) as f:
return [i.rstrip('\n') for i in f]
READ_FILE( “profiles.txt”)
答案 3 :(得分:0)
是的,我认为您从read_file函数返回了值,然后将其设置为profiles_list。 像这样
profile_list = read_file("profiles.txt", profiles_list)
您在read_file函数之外设置的profile_list与在read_file内部的on设置的值不同