首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地将字典写入文本文件

如何正确地将字典写入文本文件
EN

Stack Overflow用户
提问于 2022-07-09 06:35:08
回答 3查看 97关注 0票数 1

我试图创建一个文本文件,字典中存储了一些值,这样以后我就可以检索它,但是写会创建多个字典--我只能创建一个字典--而且返回的数据类型是字符串--如何使用它作为字典,请原谅我是python新手,

我尝试了json方法,但是我得到了typeerror-object-of-type-method-is-not-json-serializable

代码语言:javascript
复制
import json

mydic = {}

for i in range(3):
    uname = input("enter uname\n")
    pwd = input("enter pwd\n")

    mydic[uname] = pwd

print(mydic)


with open("cd.txt","a+") as file:
    file.write(str(mydic))


with open("cd.txt","r") as file:
    data = file.read()
    print(data,type(data))

数据被保存如下1-3,我在第一次尝试中输入了4-6,第二次尝试,你可以看到2种不同的dictionay被创建。

代码语言:javascript
复制
{'1': '1', '2': '2', '3': '3'}{'4': '4', '5': '5', '6': '6'}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-09 06:49:41

您正在将字典的字符串转换添加到文件中。每次运行程序时,a+标志都会告诉它以字符串的形式追加。

您可以使用json格式来修复这个问题,就像您导入的那样:

代码语言:javascript
复制
import json

mydic = {}

# Read existing data
with open('cd.json', 'r') as jsonFile:
    mydic = json.load(jsonFile)

# Get usernames and passwords
for i in range(3):
    uname = input("enter uname\n")
    pwd = input("enter pwd\n")

    mydic[uname] = pwd

print(mydic)


# Write new values
with open('cd.json', 'w') as jsonFile:   
    json.dump(mydic, jsonFile, indent=4, sort_keys=True)

首先读取现有值,然后运行您编写的获取用户名和密码的代码,最后将所有数据保存到json文件中。

票数 2
EN

Stack Overflow用户

发布于 2022-07-09 06:42:47

您需要以JSON的形式处理文件中的内容,这是更新内容的最简单方法,而不是将其作为附加的字典的字符串版本处理。

我使用pathlib.Path来促进文件交互。

代码语言:javascript
复制
import json
from pathlib import Path

file = Path("cd.json")

if file.exists():  # load existing data
    mydic = json.loads(file.read_text())
else:  # create new
    mydic = {}

# add more data
for i in range(3):
    uname = input("enter uname\n")
    pwd = input("enter pwd\n")
    mydic[uname] = pwd

print(mydic)

# save in file
file.write_text(json.dumps(mydic))

# load back to verify
mydic = json.loads(file.read_text())
print(mydic)
票数 1
EN

Stack Overflow用户

发布于 2022-07-09 06:51:35

尝试在csv文件中以Pandas Dataframe的形式编写字典。从csv文件中写入和读取要简单得多。将来,如果您有多个字典,那么您只需列出一个字典列表并写入csv文件即可。

代码语言:javascript
复制
import pandas as pd

df=pd.DataFrame([your_dictionary])
df.to_csv(file_name)

#read csv
read_df = pd.read_csv(file_name)
dict_list=read_df.to_dict('records')  #this will give you the list of dictionaries
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72919452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档