python读取txt⽂件、转为json⽂件_使⽤python操作json⽂本
⽂件
使⽤python读写⽂本⽂件内容时,我们知道如果⽂本⽂件⾥的内容⽆规律,那么修改起来⽐较⿇烦。但是如果⽂本⽂件存储是有规律的,⽐如JSON格式,在利⽤python内置的函数把JSON格式的数据转成python字典对象之类,操作起来则⾮常便捷。
阅读本⽂需要对python⽂件操作有简单了解
查看python读取⽂件的类型
在⽂本⽂件⾥随意存放⼀些数据,然后使⽤python读取出来,读到的是字符串。代码演⽰如下:
f = open('', 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('', 'w')
data = json.dumps(data) # 字典转字符串
f.write(data) # 写⼊
f.close()
运⾏上⾯的程序,⾥的内容就会变成
{"axing": "qx123456", "bxing": "wx123456", "cxing": "ex123456", "dxing": "rx123456"}
上⾯代码中的扩展名txt不是必须的,换成其它⽂本⽂件扩展名也可以。刚开始不⽤先创建⽂件,检查到没有该⽂件python会⾃动创建的。
现在假设我们已经有⼀个⽂本⽂件,内容只有⼀⾏{"axing": "qx123456", "bxing": "wx123456", "cxing": "ex123456", "dxing": "rx123456"},现在我们需要把这段⽂本的最后⼀项修改成dxing: x2018,代码演⽰如下:
import json
# 修改⽂件⾥的内容
f = open('', 'r+')
data2 = json.ad()) # 字符串转字典
data2['dxing'] = 'x2018'
f.seek(0) # 把⽂件指针移动到头部
# ll())
f.write(json.dumps(data2))
f.close()
可以看到⾮常简单的就修改了⽂本⽂件⾥的内容。
⼩练习-模拟登录
现在我们可以利⽤python操作⽂本⽂件,来时实现⼀个登录⼩程序。要求账号密码存储在⽂件中,并且密码输⼊错误三次以后锁定该⽤户,下次使⽤该⽤户名登录时,仍然处于锁定状态。
测试数据可以使⽤以下代码⽣成。
import json
data = {
'zsheng': {
'pwd': 'z123',
'lock': 0
},
'xsheng': {
'pwd': 'x123',
'lock': 0
},
python怎么读取json文件'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.ad())
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()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论