Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从文本文件中读取和写入整数?_Python_Python 3.x - Fatal编程技术网

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

Python 如何从文本文件中读取和写入整数?,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

将值浮动到文件中。 当我尝试使用.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”!

您在控制台上看到的
\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'>