【问题标题】:Getting error: write() takes no keyword arguments出现错误:write() 没有关键字参数
【发布时间】:2014-06-11 16:12:06
【问题描述】:
gd = open("gamedata.py" , "rb+")

gd.write(CharHealth = 100)

gd.close

我收到错误消息:write() 没有关键字参数,我不知道为什么。我最好的解释是代码试图将(CharHealth = 100) 解释为关键字参数,而不是将其写入gamedata.py。

我想将(CharHealth = 100)(作为一行代码)与其他代码一起写入gamedata.py

【问题讨论】:

    标签: python python-3.4


    【解决方案1】:

    如果你想写文本,那么传入一个bytes对象,而不是Python语法:

    gd.write(b'CharHealth = 100')
    

    您需要使用 b'..' bytes 文字,因为您以二进制模式打开文件。

    Python 以后可以读取文件并用 Python 解释内容这一事实并没有改变您现在正在编写字符串的事实。

    注意gd.close 什么都不做;您正在引用 close 方法而不实际调用它。最好将打开的文件对象用作上下文管理器,并让 Python 为您自动关闭它:

    with open("gamedata.py" , "rb+") as gd:
        gd.write(b'CharHealth = 100')
    

    Python 源代码是 Unicode 文本,不是字节,真的,不需要以二进制模式打开文件,也不需要读回刚刚写的内容。使用'w'作为模式并使用字符串:

    with open("gamedata.py" , "w") as gd:
        gd.write('CharHealth = 100')
    

    【讨论】:

    • gd.write('CharHealth = 100') 返回错误信息:'str' 不支持缓冲区接口
    • 是的,这就是为什么他告诉你把它写成字节。
    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 2011-12-28
    • 2021-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    相关资源
    最近更新 更多