【问题标题】:How to write variables to a temporary file in python如何在python中将变量写入临时文件
【发布时间】:2016-03-27 12:02:17
【问题描述】:

我一直在尝试将变量写入临时文本文件,但出现以下错误:

Traceback (most recent call last):
  File "F:/A453/_Codes_/APP CONFIG/Temp.py", line 102, in <module>
    ORXQC-IIHL2-6AV55-FIJEV-2""")
  File "C:\Program Files (x86)\Python34\lib\tempfile.py", line 399, in     func_wrapper
    return func(*args, **kwargs)
TypeError: 'str' does not support the buffer interface

我的脚本如下:

import tempfile
TEMPDIR=tempfile.TemporaryFile()
TEMPDIR.write("""B5IB6-ELAZ1-RAPY9-V8X1I-3
OKXVB-Q8B9G-IT9ZF-MI4EQ-2
PLDZ6-769YT-YJSR4-682JT-7
H67L5-9HO4C-4UDSR-BYA14-6
Y73EC-S8OJG-O1APH-N41KM-3
JCYVV-UXNIN-9RGSU-WQ9SD-1
WL9AO-9BLI7-GXXGM-VESEU-2
VDLHT-IXMUY-V4FPU-V3IFZ-1
8CPVN-Z776Z-Y49J3-2C683-5
ORXQC-IIHL2-6AV55-FIJEV-2""")
Activation=input('Please Enter your Product Activation Key: ')
if Activation in TEMPDIR:
    print('True')
else:
    print('False')

请帮我克服这个错误

谢谢

【问题讨论】:

  • 和普通文件一样,我猜:f = open(TEMPDIR, 'w'); f.write(something)
  • 您是否搜索了您的错误并尝试了根据您收到的消息提出的几种解决方案?
  • 你试过these solutions吗?

标签: python python-3.x temporary-files


【解决方案1】:

TemporaryFile 的默认模式是"w+b",例如二进制。您必须为文本明确提供模式:

TEMPDIR = tempfile.TemporaryFile(mode="w+")

【讨论】:

    【解决方案2】:

    TempFile返回的文件默认打开方式是'w+b'。该字符串中的b 表示它以二进制模式打开,您需要将bytes 实例传递给它的write 方法,而不是像您正在做的str 实例。

    您有几个选择。您可以将您的字符串编码为bytes。或者,您可以将模式传递给TempFile,让它以文本模式打开文件(这样write 需要Unicode str 实例)。使用适当的模式可能是更好的解决方案,但您的里程可能会有所不同。

    【讨论】:

      【解决方案3】:

      docs 说明tempfile 在打开要写入的文件时默认使用二进制模式。因此,您不能向其写入字符串(这仅适用于文本模式),只能写入 bytes 对象。

      因此,要么覆盖该默认值(如 Daniel 的回答),要么使用适当的编码对您的字符串进行编码:

      TEMPDIR.write("foo".encode("utf-8"))
      

      或立即使用bytes 对象:

      TEMPDIR.write(b"""B5IB6-ELAZ1-RAPY9-V8X1I-3...")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 2023-01-25
        • 2014-12-19
        • 2015-06-06
        • 2017-06-19
        • 2013-12-06
        • 1970-01-01
        相关资源
        最近更新 更多