2016-11-01 26 views
0

我有這個Python中添加新行不 n

f = open(os.path.join(r"PathtowhereIwant{}.txt").format(userid), "w") 
    f.write(str(points)) 
    f.write(str(level)) 
    f.write(str(prevtime)) 
    f.close() 

,我知道如何使用with open(blah) as f:,喜歡這個,但是當我有這樣的代碼,即使我先寫文件,然後切換到附加模式,而不添加+「\ n」它不會添加到新行。究其原因\ n是一個問題是,當我去使用

f = open(os.path.join(r"blah\{}.txt").format(userid), "r") 
    lines = f.readlines() 
    points = float(lines[0]) 

來獲取數據,我會得到一個錯誤,告訴我不能(例如:500 \ n)的解釋爲,因爲它的浮動讀\ n。任何想法我可以做什麼?

編輯 我最終修復它只是沒有使它浮動,但現在,這是給我一個ValueError Unconverted數據保留。這些問題不僅發生由於在TXT文件中的行應包含一個日期%H格式:%M

+2

爲什麼你使用'os.path.join'沒有加入任何東西? – user2357112

+0

爲什麼不使用rstrip去除\ n –

+4

看起來你有一些你不明白的錯誤,並且你錯誤地指責了使用'\ n'。 '\ n'很好;你還有其他問題。 – user2357112

回答

1

所以,你有這樣的事情

>>> f = open("test.txt", "w") 
>>> f.write(str(4)) 
>>> f.write(str(20)) 
>>> f.close() 
>>> f = open("test.txt") 
>>> f.readlines() 
['420'] 

但是,你需要寫換行符,所以才這樣做

>>> f = open("test.txt", "w") 
>>> f.write("{}\n".format(4)) 
>>> f.write("{}\n".format(20)) 
>>> f.close() 
>>> f = open("test.txt") 
>>> f.readlines() 
['4\n', '20\n'] 
>>> f.close() 

如果你不需要換行字符,嘗試read().splitlines()

>>> f = open("test.txt") 
>>> f.read().splitlines() 
['4', '20'] 

編輯

就時間值而言,這裏是一個例子。

>>> from datetime import datetime 
>>> time_str = datetime.now().strftime("%H:%M") 
>>> time_str 
'18:26' 
>>> datetime.strptime(time_str, "%H:%M") 
datetime.datetime(1900, 1, 1, 18, 26) 
0

要不使用換行符打印,請在下面使用。 但是,如果沒有換行,你會讀出

lines = f.readlines() 
points = float(lines[0].rstrip) 

或者當需要添加一些分離像空格分隔數據

>>> sys.stdout.write('hello world') 
hello world>>> 

隨着新行仍然存在,你可以使用rstrip脫光換行符,我更喜歡下面更pythonic的方式

lines = f.read().splitlines() 
points = float(lines[0]) 
+0

只要知道int或float函數即使數字字符串包含換行符也可以工作\ n – Skycc