2015-09-19 56 views
2

我有一個2個已創建的程序。第一個用名爲celeb.txt的文件編寫一個名爲用戶輸入的名人名字的文件。我的第二個代碼讀取該列表並顯示它。Python 3.3 - 格式問題

該代碼適用於這兩個程序,但我似乎無法讓我的格式正確。我被列爲垂直名稱,而不是在一條直線上。我不想將代碼合併到1個程序中。

好了,所以這裏是第一個代碼,獲取用戶結束名人的名字:

import sys 

def main(): 
myfile = open('celeb.txt', 'w') 
celeb = input('Enter celebrity name or Enter to quit ') 
if celeb: 
    myfile.write(str(celeb)+ '\n') 

else: 
    sys.exit(0) 

myfile.close() 
print('File was created and closed') 

main() 

這裏是我的代碼讀取.txt和輸出的名稱。我無法弄清楚如何列出名字1而不是一條直線。

def main(): 
myfile = open('celeb.txt', 'r') 

line1 = myfile.readline() 

myfile.close() 

print(line1) 

main() 
+1

您沒有正確寫入名稱,您應在每個名稱後添加一個換行符,如果readline顯示所有名稱,那麼您將它們全部寫在一行上。 'celeb.txt'是什麼樣子? –

+0

我celeb.txt程序是這樣的:進口SYS 高清的main(): MYFILE =開放( 'celeb.txt', 'W') 名人=輸入( '輸入名稱名人或Enter退出') 如果名人: myfile.write(STR(名人)+ '\ N') 其他: sys.exit(0) myfile.close() 打印( '文件被創建和關閉') 主() –

+0

我的意思是內容,添加什麼內容看起來喜歡你的問題,它看起來像你正在添加一個換行符,但這似乎並沒有增加與readline所有的名字 –

回答

0

如果你想利用多個名稱或者同時取了個名字:

def get_names(fle): 
    with open(fle,"a") as f: 
     while True: 
      inp = input("Enter a name or 'q' to quit :") 
      if inp == "q": 
       return 
      f.write("{}\n".format(inp)) 

def read_names(fle): 
    # open names file 
    with open(fle) as f: 
     # iterate over the file 
     # printing a name/line at a time 
     for name in f: 
      print(name) 

或者,如果你是在一個行採取多個名稱獲取用戶書寫之前的名稱和分裂分離:

def get_names(fle): 
    with open(fle,"a") as f: 
     inp = input("Enter names separated by a space :") 
     f.writelines(("{}\n".format(n) for n in inp.split())) 

def read_names(fle): 
    with open(fle) as f: 
     for name in f: 
      print(name)