我有一本字典,正试图把它写成一个文件.

exDict = {1:1, 2:2, 3:3}
with open('file.txt', 'r') as file:
    file.write(exDict)

那我就错了

file.write(exDict)
TypeError: must be str, not dict

所以我修正了那个错误,但又出现了另一个错误

exDict = {111:111, 222:222}
with open('file.txt', 'r') as file:
    file.write(str(exDict))

错误是:

file.write(str(exDict))
io.UnsupportedOperation: not writable

我不知道该怎么做,因为我还是python的初学者.

注意:我使用的是python 3,而不是python 2

推荐答案

首先,以读取模式打开文件并try 写入.

其次,您只能将字符串写入文件.如果要编写字典对象,需要将其转换为字符串或序列化.

import json

# as requested in comment
exDict = {'exDict': exDict}

with open('file.txt', 'w') as file:
     file.write(json.dumps(exDict)) # use `json.loads` to do the reverse

在序列化的情况下

import cPickle as pickle

with open('file.txt', 'w') as file:
     file.write(pickle.dumps(exDict)) # use `pickle.loads` to do the reverse

对于python 3.x pickle包装进口将有所不同

import _pickle as pickle

Python-3.x相关问答推荐

使用PANAS根据另两个列表中的值对一个列表中的字符串值进行分组

Python将类实例变量转换为嵌套 struct

是什么原因导致Pandas=2.1.4和Pandas=1.4.2之间Pandas DataFrame中从Float64到int32的连续列转换方式不同

我可以设置树视图层次 struct 按钮吗?

为什么 get_form 方法中小部件的更改没有反映 Django 管理站点中的更改

嵌套协议的使用(协议成员也是协议)

以不规则频率识别数据框日期时间列上缺失的日期,并用关联值填充它们

当参数名称与 typing.Protocol 中定义的名称不同时发生 mypy 错误

Python:如何在Pandas 的 .agg 函数中使用 value_counts()?

通过最接近的匹配合并两个不同长度的列上的两个数据框

pymongo 失败并出现错误未定义

如何准确测定cv2的结果.在BW/黑白图像中查找对象?

通过 requests 库调用 API 获取访问令牌

具有两个或多个返回参数的函数注释

如何调试垂死的 Jupyter Python3 内核?

Python:在 map 对象上调用列表两次

如何将二进制(字符串)转换为浮点值?

python setup.py egg_info mysqlclient

混合全局/参数和名为top的函数的奇怪python行为

为什么在 Python 3 中实例的 __dict__ 的大小要小得多?