将值浮点到一个文件中。
当我尝试使用 .write() 时,它将输入作为字符串。
我想它真的是 Python 的基础,但我是新手。
希望你们不要对这个问题生气:D
with open('C:/Python35/sample.txt', 'w') as f:
data = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
for i in data:
f.write('%d \n' % i)
with open('C:/Python35/sample.txt', 'r', encoding='utf-8') as g:
data = g.readlines()
print(data)
如果我运行这个,我可以得到如下结果。
['70 \n', '60 \n', '55 \n', '75 \n', '95 \n', '90 \n', '80 \n', '80 \n', '85 \n', '100 \n']
它是字符串列表,而不是 int 值。
(也想知道为什么'data'列表中有'\n'!)
您的 sample.txt
文件的格式可能如下所示:
70
60
55
75
95
90
80
80
85
100
该文件中没有任何内容会记住您插入的值是一个整数,并且由于它是一个文本文档 (.txt
),因此它也不会像这样对数字进行编码。至于 \n
,每个数字都在其自己的行上,这意味着必须有一些字符表示换行符,因此 \n
换行符。
如果您查看代码中的这一行:
f.write('%d \n' %i)
您明确地在每个数字后写了 \n
。如果要从文本文件中读取数字并将它们设为整数,则必须显式地将字符串值转换为其整数表示形式。您可以将该逻辑重写为:
>>> with open("sample.txt", "r", encoding="utf-8") as g:
... data = list(map(int, g.readlines()))
...
>>> data
[70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
它将 int
类型映射到 g.readlines()
返回的列表的每个值,然后转换 map
对象再次添加到 list
中。而且,如果您想知道,int
会像您在每一行中那样忽略空格(空格和换行符)。
>>> int("70 \n")
70
>>> type(int("60 \n"))
<class 'int'>