2013-07-16 179 views
0

我想一些文本插入到我的文件,插入文本文件

X 
--- 
0.1 
0.2 
. 
. 
. 
99.9 

我要添加到該文件中的一些隨機浮點數:

X  Y 
0.1 ,38.58 
0.2 ,12.45 
0.3 ,79.03 
. , . 
. , . 
99.9 ,47.36 

代碼:

#!/usr/bin/python 
import random 

a=[random.uniform(10,100) for i in range (1000)] 

c = open("dosya.txt","w") 
c.write('X DEGER: Y DEGER:\n') 
c.write('--------------\n') 

count = 0 
while (count < 99.9): 
    count = count + 0.1 
    c.write("%s \n" % (count,))  
    c.close 

c= open("dosya.txt","r+") 
c.seek(37,0) 
for k in range(900): 
    print a[k] 
    c.write(",%f" %(a[k])) 

    c.seek(5,1)  
c.close 

當我運行它時,我得到了混亂的文本文件..你能告訴我我的錯在哪裏?

回答

2

您沒有關閉該文件。您只引用該方法,而不是實際調用它。比較:

c.close 

c.close() 

因此,你的文件將只寫在第二個for循環的一切。即使在這裏,事情也會變得混亂。 (因此你爲什麼得到一個「凌亂的文本文件」)。


它實際上是更Python在這裏使用的with語句來打開文件。它有它會自動關閉文件一旦你完成了與他們的合作具有很大的優勢,所以你不需要調用close()

with open("dosya.txt","w") as c: 
    c.write('X DEGER: Y DEGER:\n') 
    c.write('--------------\n') 

    count = 0 
    while (count < 99.9): 
     count = count + 0.1 
     c.write("%s" % (count,)) 

您的代碼也有點...奇怪。我會解決一些問題:

c.write("%s \n" % (count,))。這裏不需要額外的逗號。你可以刪除它。所以你的代碼應該看起來像:

count = 0 
while count < 99.9: 
    count += 0.1 
    f.write('%s, \n' % count) 
+0

你爲什麼要這麼做? '(count,)'你想通過它達到什麼目的?如果你想在數字周圍加上括號,就把它放入字符串中:'c.write(「(%s)\ n」%count)'另外,'count = count + 0.1'可以寫成'count + = 0.1' –

+0

我試過你說但沒有區別,, –

+0

@InbarRose我解決了主要問題。但我會編輯我的答案 – TerryA

0

而不是隻是指的方法,你必須調用它。

試試這個:

c.close()

你輸入錯誤爲:

c.close

+0

有沒有區別我的和你說我試過 –

+0

你可以告訴你的文本文件看起來像什麼? – tenstar

+0

.1,15.957096 0.2,17.7646010.3,16.634242.4,36.2960095,75.380792,41.399928,25.812779,52.503987,66.059277,61.988461,58.586576 ,18.795600 1,67.372559 1,57.688011 1.6,21.963218 1.7, 11.2010241.8,73.002422.9,26.4042970,32.556507,68.669588,27.923578,21.795854,58.223057,64.326399,58.302718 ,61.212347 2,65.266870 3,60.669146 –

0

看起來像你對我試圖寫數據的2列的文件中2次。

相反,這樣做在一個通:

import random 

with open('dosya.txt', 'w') as f: 
    f.write('X DEGER: Y DEGER:\n') 
    f.write('--------------\n') 
    count = 0.0 
    while (count < 99.9): 
     count += 0.1 
     f.write('%s, %f\n' % (count, random.uniform(10,100)) 
+0

我已經做了一個短語:)我需要修改2列 –