Python 如何从文本文件中读取和写入整数?
将值浮动到文件中。 当我尝试使用.write()时,它将输入作为字符串。 我想这确实是Python的基础,但我对它还不熟悉。 希望你们不要对这个问题生气:DPython 如何从文本文件中读取和写入整数?,python,python-3.x,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
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”!您在控制台上看到的
\n
只是Python默认的repr
字符串表示。如果要将数据行写入文件并逐行打印文件,可以这样做(我所做的只是迭代列表并一次打印一行,而不是打印数组):
方法readlines()使用readline()读取直到EOF,并返回包含行的列表
使用记事本o从提示符执行打开sample.txt:
键入sample.txt
您的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'>
>>int(“70\n”)
70
>>>类型(int(“60\n”))
\n
不是字符串的默认表示形式的一部分,它只是文本文档中的一个换行符。我的意思是调用repr(some_string)
,如果该强函数有新行,将打印出\n
,这正是您尝试打印字符串列表时发生的情况。我认为换行是由print
函数中的end
关键字参数引起的,该参数默认为\n
。试着调用print(repr(6),end=“”)
()@DYZ我理解常见标题带来的混淆,但这个问题是关于读/写整数值的,而只涉及写作部分。我不认为这是一个重复的问题。
>>> int("70 \n")
70
>>> type(int("60 \n"))
<class 'int'>