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

当我运行它时,我得到了凌乱的文本文件。你能告诉我我的错在哪里吗?

4

3 回答 3

2

您没有关闭文件。您只引用了该方法,而不是实际调用它。相比:

c.close

c.close()

因此,您的文件只会在第二个 for 循环中写入所有内容。即使在这里,事情也会变得一团糟。(因此为什么你会得到一个“凌乱的文本文件”)。


with用这里的语句打开文件其实更pythonic 。它有一个很大的优势,它会在您使用完文件后自动关闭文件,因此您无需调用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)
于 2013-07-16T10:12:41.460 回答
0

而不是仅仅引用方法,你必须调用它。

试试这个:

c.close()

您将其输入错误为:

c.close

于 2013-07-16T10:14:35.563 回答
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))
于 2013-07-16T10:27:34.787 回答