【问题标题】:Unable to save file in .txt format from Python 3.x [duplicate]无法从 Python 3.x 以 .txt 格式保存文件 [重复]
【发布时间】:2020-10-12 03:46:03
【问题描述】:

我在下面的代码中有以下输出,我试图将内容保存在 .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,而不是字节”

我做错了什么?

谢谢,

【问题讨论】:

标签: python python-3.x jupyter-notebook


【解决方案1】:

当您打开要写入的文件时,您需要指定您正在向其写入字节,而不是字符串,如下所示:open('f1.txt', 'wb')。您也可以像@Wrykoulaka 推荐的那样选择将其写为字符串!

【讨论】:

    【解决方案2】:

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

    改用f.write(s1),应该没问题。

    【讨论】:

      【解决方案3】:

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

      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 并将这些行附加为字符串而不是字节

      【讨论】:

      • 我收到此错误:f1.txt 不是 UTF-8 编码的保存已禁用如果我从本地驱动器进入文件,我会看到内容,但在 Jupyter 中如果我打开我会收到上述错误。
      【解决方案4】:
      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”激活二进制模式。

      【讨论】:

      • 我收到此错误:f1.txt 不是 UTF-8 编码的保存已禁用如果我从本地驱动器进入文件,我会看到内容,但在 Jupyter 中如果我打开我会收到上述错误。
      • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为何解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案添加解释并说明适用的限制和假设。
      • 补充说明,谢谢您的建议。 @БогданОпир
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2021-06-28
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多