我需要编写一个python脚本,写出一个包含10个名字的列表,读回文件并按字母顺序打印出来
我有点得到我必须做的但我怎么做是我的问题,我不知道你是否必须将文本文件转换为列表然后使用sort()函数或者如果我能做到这一点通过拆分线。
这是我目前的代码:
my_file = open("Names.txt", "w")
for i in range(1, 11):
my_file.write(str(input("Please enter a name")) + ", \n")
my_file.close()
my_file = open("Names.txt", "r")
for line in my_file:
print(line)
for line in my_file:
my_file.sort()
my-file.close()
答案 0 :(得分:1)
看起来你正在写文件
如何
print "".join(sorted(open("Names.txt", "r")))
这是有效的,因为当你遍历一个打开阅读的文件时,它会消耗文件的行
顺便说一下,这也是你的代码不起作用的原因
当您使用line in my_file
时,您使用该文件并将其留在文件的末尾
然后当你第二次这样做时,你已经在文件的末尾,所以你永远不会进入第二个循环
除此之外,您似乎正在尝试对每个名称进行排序,(即Susan - > Sansu)
答案 1 :(得分:1)
试试这个:
my_file = open("Names.txt", "w")
for i in range(1, 11):
my_file.write(str(input("Please enter a name")) + ", \n")
my_file.close()
my_file = open("Names.txt", "r")
for line in sorted(my_file):
print line
my-file.close()
答案 2 :(得分:0)
with open("Names.txt", "a+") as f: # use with to open files as it closes them automatically
for i in range(1, 11):
f.write("{} \n".format(str(input("Please enter a name"))))
f.seek(0) # go back to start of file
for line in f: # print each name
print(line)
f.seek(0) # go back to start again
lines = sorted(f.readlines()) # sort the names
with open("Names.txt", "w") as f1: # write names in sorted order
for line in lines:
f1.write(line)