Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python对文件进行排序并按字母顺序打印_Python_File_Sorting - Fatal编程技术网

用python对文件进行排序并按字母顺序打印

用python对文件进行排序并按字母顺序打印,python,file,sorting,Python,File,Sorting,我需要编写一个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_fi

我需要编写一个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()

看起来您正在向文件中写入内容

就这样怎么样

print "".join(sorted(open("Names.txt", "r")))
这是因为当您迭代一个打开读取的文件时,它会占用文件的行数

顺便说一句,这也是代码不起作用的原因

当您在my_文件中为
行执行操作时
会使用该文件,并将您留在文件末尾

然后,当您第二次这样做时,您已经在文件的末尾,因此您永远不会进入第二个循环

除此之外,您似乎正在尝试对每个名称进行排序(即Susan->Sansu)

试试这个:

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()

这不会单独打印每一行,但对于家庭作业问题来说,这可能是一个足够好的答案。。。我猜-1不是你。。。但如果被否决的人留下评论就好了谢谢你给了我怀疑的理由,不,不是我。我也讨厌那些被否决的投票。这太棒了,但是有没有办法从输出中删除\n,或者甚至将它们打印在单独的行上?啊,出于某种原因,我认为结尾的新行是通过这个迭代自动删除的。。。我的坏朋友为什么要再次打开文件?为什么不另一个
f.seek(0)
?另外,注释字符是
#
,而不是
'
(见第一行)。@StevenRumbalski,因为我更喜欢在重写同一文件时使用“w”重新打开,我认为
'
显然是一个打字错误,因为对其他5条注释使用了
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()