1

我想创建一个文件:

X 值:

1
2
3
4
5
.
.
.
999

要做到这一点,我写了那个命令,但是;

像这样的错误:argument 1 must be string or read-only character buffer, not float,,

from numpy import *

c = open("text.txt","w")
count = 0
while (count < 100):
   print  count
   count = count + 0.1
   c.write (count)
   c.close
4

3 回答 3

6

写入文件时,您必须写入字符串,但您正在尝试写入浮点值。用于str()将它们转换为字符串以进行写入:

c.write(str(count))

请注意,您的c.close线路实际上什么也没做。它引用.close()文件对象上的方法,但实际上并不调用它。您也不想在循环期间关闭文件。相反,使用该文件作为上下文管理器,以便在您使用该文件时自动关闭它。您还需要明确地包括换行符,写入文件不包括像print语句那样的那些:

with open("text.txt","w") as c:
    count = 0
    while count < 100:
        print count
        count += 0.1
        c.write(str(count) + '\n')

请注意,您将计数器增加 0.1,而不是1,因此您创建的条目比您的问题似乎建议您想要的多 10 倍。如果你真的只想写 1 到 999 之间的整数,你也可以使用xrange()循环:

with open("text.txt","w") as c:
    for count in xrange(1, 1000):
        print count
        c.write(str(count) + '\n')
于 2013-07-15T11:48:23.730 回答
0

我可以看到的多个问题是: 1. 您只能将字符缓冲区写入文件。你问的主要问题的解决方案。

c.write (count) should be c.write (str(count))

2.您需要在循环之外关闭您的文件。你需要取消缩进 c.close

from numpy import *    
c = open("text.txt","w")
count = 0
while (count < 100):
   print  count
   count = count + 0.1
   c.write (count)
c.close()

3. 即使在这些之后,此代码也会打印并保存以 0.1 递增的数字,即 0.1,0.2,0.3....98.8,99.9 您可以使用 xrange 来解决您的问题。

result='\n'.join([str(k) for k in xrange(1,1000)])
print result
c = open("text.txt","w")
c.write(result)
c.close()
于 2013-07-15T12:28:08.333 回答
0

此外,您将在 while 循环的每次迭代中关闭文件,因此这将写入您的第一行然后崩溃。

取消您的最后一行,以便文件仅在所有内容都写入后关闭:

while (count < 100):
    print  count
    count = count + 0.1
    c.write(str(count))
c.close()
于 2013-07-15T11:51:27.093 回答