2024-06-28 02:56:52 发布
网友
我有以下代码:
lines[usernum] = str(user) + "\n" f = open('users.txt','w') userstr = str(lines) f.write(userstr)
实际上,我正在修改usernum处的lines列表,然后将其写回原始文件'users.txt'。但是,即使添加“\n”,对于lines中的每一行,所有内容都会写入一行而不是一行。为什么会这样?在
usernum
lines
'users.txt'
您正在将列表的字符串表示形式写入文件。在
Python容器的字符串表示使用内容的表示法,而不是直接编写字符串。在
使用writelines()函数编写字符串序列:
writelines()
f.writelines(lines)
或者分别写下每一行:
或者将这些线连接成一个长串:
f.write(''.join(lines))
后者还允许您在编写时添加新行,方法是使用\n作为连接字符串:
\n
f.write('\n'.join(lines))
其中lines包含字符串,而不包含新行。在
这是因为str(lines)不会执行您期望的操作:
str(lines)
>>> lst = ['This', 'is a\n', 'fancy\n', 'list'] >>> print(str(lst)) ['This', 'is a\n', 'fancy\n', 'list']
如您所见,它将编写列表的表示形式,而不是打印出单独的行。可以使用^{}组合列表元素:
使用'\n'作为连接字符将确保在每个列表元素之间插入一个换行符,因此不需要手动将其添加到每个项中。在
'\n'
此外,在处理文件时,建议在打开文件时使用with语句,以确保在处理完文件后,文件被正确关闭。在
with
使用for循环和'\n'将每个项目写入新行:
with open('users.txt','w') as f: for line in lines: f.write('{}\n'.format(line))
对像list或{}这样的python对象调用str(),只需返回该对象的str版本,将其内容写入应该循环的文件中。在
list
str()
str
演示:
您正在将列表的字符串表示形式写入文件。在
Python容器的字符串表示使用内容的表示法,而不是直接编写字符串。在
使用
writelines()
函数编写字符串序列:或者分别写下每一行:
^{pr2}$或者将这些线连接成一个长串:
后者还允许您在编写时添加新行,方法是使用
\n
作为连接字符串:其中
lines
包含字符串,而不包含新行。在这是因为
str(lines)
不会执行您期望的操作:如您所见,它将编写列表的表示形式,而不是打印出单独的行。可以使用^{} 组合列表元素:
^{pr2}$使用
'\n'
作为连接字符将确保在每个列表元素之间插入一个换行符,因此不需要手动将其添加到每个项中。在此外,在处理文件时,建议在打开文件时使用
with
语句,以确保在处理完文件后,文件被正确关闭。在使用for循环和
'\n'
将每个项目写入新行:对像}这样的python对象调用
list
或{str()
,只需返回该对象的str
版本,将其内容写入应该循环的文件中。在演示:
^{pr2}$相关问题 更多 >
编程相关推荐