在File命令Python中添加循环

时间:2013-07-15 11:46:53

标签: python file loops

ı想要创建一个文件:

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

3 个答案:

答案 0 :(得分:6)

写入文件时,必须编写 strings ,但是您正在尝试写入浮点值。使用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')

答案 1 :(得分:0)

另外,你在while循环的每次迭代中关闭你的文件,所以这将写下你的第一行然后崩溃。

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

while (count < 100):
    print  count
    count = count + 0.1
    c.write(str(count))
c.close()

答案 2 :(得分:0)

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

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

2。您需要在循环外关闭文件。你需要unindent 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()