2015-10-18 46 views
0
#!/usr/bin/python 
import sys 

def main(): 

    f=open("a",'r') 
    line1=f.readlines() 
    f.close() 

    try: 
     sys.stdout.write(line1) 
    except: 
     print "?" 
if __name__ == "__main__": 
    main() 
+0

您正在嘗試將列表寫入打開的文件描述符。你需要寫一個字符串。我想你以後是'line1 = f.readline()'(不是'f.readlines()') – inspectorG4dget

回答

1

f.readlines()不返回單個字符串,它返回列表。即使只有一條線!所以sys.stdout.write()不知道如何處理。如果遍歷該行列表,並嘗試寫入每一行,那麼它工作得很好:

#!/usr/bin/python 
import sys 

def main(): 

    f = open("a",'r') 
    lines = f.readlines() # lines is actually a list 
    f.close() 

    print lines # You'll see your issue, here! 
    try: 
     for line in lines: 
      sys.stdout.write(line) # Works now 
    except: 
     print "?" 

if __name__ == "__main__": 
    main() 
+0

順便說一句,爲什麼不只是使用'text = f.read()'? –

+1

@KevinGuan事實上,如果可以的話,最好的選擇就是簡單地使用'for line in f:'而不需要指定。文件對象本身是一個將逐行返回行的迭代器。另請注意,'f.read()'只是將整個文件作爲一個塊讀取,而'readlines()'將行分割成一個列表。所以他們做不同的事情,取決於你想要的功能。 – Symmitchry

+0

是的,我知道,我想如果OP只是想打印出來的文件,但是'f.read()'或'for line in f:'比'f.readlines()'更簡單:P –

相關問題