2016-11-01 8 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"を追加することなく、新しい行に追加しません。その理由はfloatとして:\ nは問題である理由は、私は

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

を使用してデータを取得するために行くとき、私はエラーが、それは(n個\ 500など)を解釈することはできません私に言ってますよということです\ nを読み込みます。私は何をすることができますか?

EDIT 私はちょうどそれフロートなっていないが、今それはとValueError未変換データが残っ私を与えていることによってそれを固定してしまいました。これらの問題は、唯一の原因%のHの形式で日付が含まれている必要がありtxtファイル内の行に起こっている:%の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'] 

EDIT

これまでの例では、時間の値について説明します。

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

改行なしで印刷するには、以下を使用してください。改行付き しかし、改行せずに、あなたのデータを分離するためのスペースのようないくつかの区切りを追加する必要があるかもしれません

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

が残る代わり

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

を読み出すとき、あなたは改行を取り除くためにrstripを使用することができます、私はより多くのpythonic方法を好む

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

数値文字列に改行が含まれていてもintまたはfloat関数が機能することを知っている\ n – Skycc

関連する問題