2014-03-13 14 views
0

我想从文件中添加一个值到列表,然后能够将文件中的值添加到列表中。 这是我有:Python文件,将值添加到/从列表

L = []   
def readFile(L): 
    ui = input("Please enter your file name:") 
    r = open(ui, 'r') 
    files = r.readlines() 
    for line in files: 
     return float(line) 
    L.append(line) 
    r.close() 

def fileAddValue(L): 
    ui = input("Please enter your file name:") 
    val = float(input("Enter the value you would like to add to the list: ")) 
    r = open(ui, 'a') 
    file = r.write(str(val) + '\n') 
    for ix in r: 
     x = float(ix) 
    L.append(x) 
    L.sort() 
    r.close() 
+3

你的问题是什么? –

+0

对不起,我不清楚。我只是想弄清楚如何读取文件中的值并将它们存储在列表和签证经文中。错误后我不断收到错误。 – juhnellove

回答

0

你有几个问题...

首先,当你打开你需要使用with一个文件,这将处理关闭您的文件保存到磁盘。

现在,当您逐行读取每行时,您将返回第一行。从整个功能返回,所以不是你想要的。我接受它你想把每个项目追加到你的列表中。

此外,您的功能更好地通用。传入文件名和数据。让他们在功能之外获得更大的灵活性。

目前还不清楚你想在这里做什么。我假设你想要指定要添加到保存在文件中的列表中的值。有更好的方法来做到这一点。这是我基于你原来的代码的尝试。

def readFile(ui): 
    L = [] 
    with open(ui, 'r') as f: 
     for line in f.readlines(): 
      L.append(float(line)) 
    return sorted(L) 

def fileAddValue(ui, val): 
    with open(ui, 'a') as f: 
     f.write(str(val) + '\n') 

ui = raw_input("Please enter your file name:") 
L = readFile(ui) 
print('original file:') 
print(L) 
val = float(raw_input("Enter the value you would like to add to the list: ")) 
fileAddValue(ui, val) 
L = readFile(ui) 
print('updated file:') 
print(L) 
+0

对不起,我不清楚。感谢您的帮助,这非常有帮助!我只是想弄清楚如何读取文件中的值并将它们存储在列表和签证经文中。错误后我不断收到错误。 – juhnellove

0

你需要那样的东西?

L = [] 
def readFile(): 
    ui = input("Please enter your file name:") 
    r = open(ui, 'r') 
    files = r.readlines() 
    for line in files: 
     value = float(line) 
     L.append(value) 
    r.close() 

def fileAddValue(): 
    ui = input("Please enter your file name:") 
    val = float(input("Enter the value you would like to add to the list: ")) 
    r = open(ui, 'a+') 
    r.write(str(val) + '\n') 
    for ix in r: 
     x = float(ix) 
     L.append(x) 
    L.append(val) 
    L.sort() 
    r.close() 

if __name__ == '__main__': 
    readFile() 
    fileAddValue() 
    print(L) 

虽然它的非pytonic(想不碰你的代码,除非必要的),它的工作原理,如果我得到你的问题的权利。 缩进代码在Python中很重要,并且从函数返回可以确保返回后的代码永远不会运行。如果您想要一个函数“返回”多个值,以便您可以使用for迭代该“函数”,请使用yield而不是return