由于new_list
显然是行列表,而不是文件名,因此您不需要open
ing 和read
ing 它的所有内容。而且您也不能保存在单个write
.
但你几乎可以这么简单地做到这一点。
您没有指定其中的行是否new_list
仍有换行符。让我们首先假设他们这样做。所以,你所要做的就是:
def save_file(filename, new_list):
with open(filename, 'w') as f:
f.write(''.join(new_list))
… 或者 …:
def save_file(filename, new_list):
with open(filename, 'w') as f:
f.writelines(new_list)
但是你的老师可能期待这样的事情:
def save_file(filename, new_list):
with open(filename, 'w') as f:
for line in new_list:
f.write(line)
如果换行符被去掉了,所以我们必须把它们加回来怎么办?那么前两种方法有点复杂,但第三种方法仍然很容易:
def save_file(filename, new_list):
with open(filename, 'w') as f:
f.write('\n'.join(new_list) + '\n')
def save_file(filename, new_list):
with open(filename, 'w') as f:
f.writelines(line + '\n' for line in new_list)
def save_file(filename, new_list):
with open(filename, 'w') as f:
for line in new_list:
f.write(line + '\n')
与此同时,你还没有开始load_file
工作。它应该返回一个行列表,但它不返回任何东西(或者,更确切地说,它返回None
)。print
ing 有些东西只是打印出来供用户查看,它不存储任何东西以供以后使用。
你想要这样的东西:
def load_file(filename):
lines = []
with open(filename, 'Ur') as f:
for line in f:
lines.append(line)
return lines
但是,有一种更简单的方法来编写它。如果你能做到for line in f:
,那么f
就是某种可迭代的。它与列表几乎是一样的——如果你想把它变成一个实际的列表,那很简单:
def load_file(filename):
with open(filename, 'Ur') as f:
return list(f)