无法从Python 3.x以.txt格式保存文件

2024-05-14 03:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码有如下输出,我试图将内容保存在.txt文件中,但得到的错误如下 样本输出:

<tide> <locationdata> <nodata info=""/> </locationdata> </tide> <tide> <locationdata> <location name="KRISTIANSUND" code="KSU" latitude="63.479150" longitude="8.117700" delay="0" factor="1.03" obsname="KRID" obscode="KSU"/> <reflevelcode>CD</reflevelcode> <data type="prediction" unit="cm"> <waterlevel value="82.8" time="2017-06-04T16:00:00+01:00" flag="pre"/> </data> </locationdata> </tide>
for i in range(len(list1)):
  list1[i] = list1[i].decode("utf-8").strip()
  print(list1[i])    
f=open('f1.txt','w')  
s1='\n'.join(list1)
f.write(s1.encode('utf-8'))  
f.close()

我收到的错误消息是“write()参数必须是str,而不是bytes”

我做错了什么

谢谢


Tags: 文件代码txt内容data错误utfwrite
3条回答

此错误是由于在写入文件之前尝试对字符串s1进行编码造成的

改用f.write(s1),你会没事的

问题:您正在写入字节而不是文本 行:

f.write(s1.encode('utf-8'))  

解决方案:

for items in list1:
    with open("f1.txt","a") as f:
        f.write(items + "\n")
        f.close()

解决方案说明:对于list1的每一行,打开f1.txt并将这些行作为字符串而不是字节追加

for i in range(len(list1)):
  list1[i] = list1[i].strip()
  print(list1[i])    
f=open('f1.txt','wb')  
s1='\n'.join(list1)
f.write(s1.encode('utf-8'))  
f.close()

当您对字符串进行编码时,它将转换为位,因此输出文件应处于二进制模式,以便将其写入文件中。open()函数中的“b”激活该二进制模式

相关问题 更多 >