2014-10-27 105 views
0

所以我最近纔開始使用python,並且已經開始使用python了,但是讀取和寫入文件確實讓我很難過。對文件進行排序並在python中按字母順序打印出來

我的分配如下: 然後,您需要編寫寫出的10人名單的Python腳本,讀取文件回來,按字母順序打印出

我有點明白我必須做但我如何做是我的問題,我不知道是否必須將文本文件轉換爲列表,然後使用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() 

正如你所看到的,我徹底糊塗了。 如果您可以請解釋我要出錯的地方,以及我必須做些什麼來解決這個問題,這將是一個很大的幫助。

回答

1

它看起來像你正在寫的文件罰款

如何只

print "".join(sorted(open("Names.txt", "r"))) 

這工作,因爲當你遍歷文件多數民衆贊成開放閱讀它佔用的文件的行

順便說一句,這也是你的代碼不工作的原因

當你這樣做line in my_file你消耗的文件, VES你在文件的結尾

那麼當你做了第二遍,你已經在文件的結尾讓你永遠走在第二循環中

此外,它看起來像你想每個名字,(即蘇珊 - >山水)排序

+0

這不會單獨打印每行,但它可能是一個家庭作業的問題足夠好的答案。 – 2014-10-27 16:56:11

+0

there fixed:P ...即時猜測-1不是你...但它會很好,如果誰downvoted留下評論 – 2014-10-27 16:59:33

+1

感謝給我的懷疑的好處,不,它不是我。我討厭那些驅車降低的言論。 – 2014-10-27 17:01:29

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) 
+0

爲什麼第二次打開該文件?爲什麼不是另一個'f.seek(0)'?此外,註釋字符是'#',而不是'''(請參閱您的第一行)。 – 2014-10-27 17:16:49

+0

@ StevenRumbalski,因爲我更喜歡在重寫同一個文件時使用「w」重新打開,我認爲'''顯然是考慮到其他5條評論使用'#'的拼寫錯誤 – 2014-10-27 17:23:32

0

試試這個:

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() 
相關問題