我正在尝试将一个值添加到文件中的列表中,然后能够将值从文件中添加到列表中。这就是我所拥有的:
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()
您有一些问题...
首先,当您打开文件时,您需要使用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)
您需要这样的东西吗?
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)
虽然它是非纯化的(除非有必要,否则请不要触摸您的代码,但如果我正确地解决了您的问题,它可以正常工作。缩进代码在Python中很重要,并且从函数中返回可以保证返回后的代码永远不会运行。如果您想要一个"返回"几个值的函数,因此可以使用for
迭代该"功能",请使用yield
代替return
。