ı想要创建一个文件:
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
答案 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()