糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > python 读取txt文件 转为json文件_使用python操作json文本文件

python 读取txt文件 转为json文件_使用python操作json文本文件

时间:2020-09-26 18:13:29

相关推荐

python 读取txt文件 转为json文件_使用python操作json文本文件

使用python读写文本文件内容时,我们知道如果文本文件里的内容无规律,那么修改起来比较麻烦。但是如果文本文件存储是有规律的,比如JSON格式,在利用python内置的函数把JSON格式的数据转成python字典对象之类,操作起来则非常便捷。

阅读本文需要对python文件操作有简单了解

查看python读取文件的类型

在文本文件里随意存放一些数据,然后使用python读取出来,读到的是字符串。代码演示如下:

f = open('hello.txt', mode='r', encoding='utf-8')

data = f.read()

print(type(data))

print(data)

# 输出如下:

#

# hello-world

# 你好世界

演示代码文本的编码均为UTF-8

字符串与字典互转

为什么要互转呢,我们这里主要是针对文本文件的操作。我们读文本文件时读到是字符串,相应的把数据写入文本文件的时候,也是把字符串写入文本文件。但是在程序中,字符串不好操作,而类似字典这种类型的数据结构容易操作,所以需要字符串与字典互转。

需要用到json模块的俩个函数,json.dumps()和json.loads()

把字典数据转成字符串并写入到文本文件中去。代码演示如下:

import json

data = {

'axing': 'qx123456',

'bxing': 'wx123456',

'cxing': 'ex123456',

'dxing': 'rx123456'

}

f = open('xjson.txt', 'w')

data = json.dumps(data) # 字典转字符串

f.write(data) # 写入

f.close()

运行上面的程序,xjson.txt里的内容就会变成

{"axing": "qx123456", "bxing": "wx123456", "cxing": "ex123456", "dxing": "rx123456"}

上面代码中的扩展名txt不是必须的,换成其它文本文件扩展名也可以。刚开始不用先创建xjson.txt文件,检查到没有该文件python会自动创建的。

现在假设我们已经有一个xjson.txt文本文件,内容只有一行{"axing": "qx123456", "bxing": "wx123456", "cxing": "ex123456", "dxing": "rx123456"},现在我们需要把这段文本的最后一项修改成dxing: x,代码演示如下:

import json

# 修改文件里的内容

f = open('xjson.txt', 'r+')

data2 = json.loads(f.read()) # 字符串转字典

data2['dxing'] = 'x'

f.seek(0) # 把文件指针移动到头部

# print(f.tell())

f.write(json.dumps(data2))

f.close()

可以看到非常简单的就修改了文本文件里的内容。

小练习-模拟登录

现在我们可以利用python操作文本文件,来时实现一个登录小程序。要求账号密码存储在文件中,并且密码输入错误三次以后锁定该用户,下次使用该用户名登录时,仍然处于锁定状态。

测试数据可以使用以下代码生成。

import json

data = {

'zsheng': {

'pwd': 'z123',

'lock': 0

},

'xsheng': {

'pwd': 'x123',

'lock': 0

},

'csheng': {

'pwd': 'c123',

'lock': 0

},

'vsheng': {

'pwd': 'v123',

'lock': 0

}

}

f = open('account.json', mode='w', encoding='utf-8')

data2 = json.dumps(data)

f.write(data2)

f.close()

生成的测试数据如下。

{"zsheng": {"pwd": "z123", "lock": 0}, "xsheng": {"pwd": "x123", "lock": 0}, "csheng": {"pwd": "c123", "lock": 0}, "vsheng": {"pwd": "v123", "lock": 1}}

参考实现如下

import json

f = open('account.json', mode='r+', encoding='utf-8')

data = json.loads(f.read())

count = 0

while 1:

username = input('Please input you username: ')

if username == 'q':

exit()

if username not in data:

print('Wrong username!')

continue

if username in data:

if data[username]['lock'] == 1:

print('Your account is locked! Refuse to login!')

exit()

while 1:

count += 1

if count > 3:

data[username]['lock'] = 1

# print(data)

f.seek(0)

f.write(json.dumps(data))

print('Your account is locked!')

exit()

print('This is your %d time try!' % count)

password = input('Please input your password: ')

if data[username]['pwd'] == password:

print('Welcome to login %s' % username)

exit()

elif password == 'q':

exit()

else:

print('Wrong password, retry!')

continue

f.close()

如果觉得《python 读取txt文件 转为json文件_使用python操作json文本文件》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。