读取文件功能

时间:2017-05-22 01:32:28

标签: python

基本上,我希望这个函数取一个文件名,将该文件的内容读入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)

我是初学者,我知道我在某个地方犯了错误,我只是不知道在哪里。问题是它在被叫时只是没有读任何东西。

4 个答案:

答案 0 :(得分:0)

  1. 尝试在read_file的调用者中执行以下操作:

    return_list = [] // define it a list
    read_file(..., return_list)
    
  2. 在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设置的值不同