如何从文本文件读取和写入整数?

时间:2019-01-16 03:17:12

标签: python python-3.x

将值浮动到文件中。 当我尝试使用.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值。 (也想知道为什么“数据”列表中有“ \ n”!)

3 个答案:

答案 0 :(得分:1)

您可能将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'>

答案 1 :(得分:0)

您在控制台上看到的\n仅仅是Python的默认repr字符串表示法。如果要将数据行写入文件并逐行打印文件,可以执行此操作(我所做的只是遍历列表并一次打印一行,而不是打印数组):

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()

for line in data:
    print(line)

答案 2 :(得分:0)

方法 readlines()读取直到使用readline()结束EOF并返回包含这些行的列表。

使用记事本o从提示符下执行type sample.txt

打开sample.txt