python问题,python 通过读取到的liansuodian.json数据文件,通过ping判断ip地址是否相通,对不通的ip地址,写入lixian.json文件。
存在问题1:目前对于不通的数据写入lixian.json,里边只有最后一条数据,之前的数据不显示。目前不通的记录数据应该是2条数据,但是每次执行时都只能写入最后一条,第一条无法写入。再几个地方试过加循环,但是仍然无法解决。
问题2:离线记录每写入一个字典,应该怎样动态加逗号,最后一个写入的字典数据应该没有逗号。不知道应该怎样加。
请帮忙解答,感激不尽,谢谢!
目前写入的结果:
{
"lsd":[
{
"lsdcode": "A799",
"lsdname": "测试店2",
"lsdwg": "172.16.10.213"
}
]
}
应该写入的结果:
{
"lsd":[
{
"lsdcode":"A099",
"lsdname":"测试店",
"lsdwg":"172.16.10.189",
"lsdfwq": "193.168.35.2"
},
{
"lsdcode": "A799",
"lsdname": "测试店2",
"lsdwg": "172.16.10.213"
}
]
}
liansuodian.json
```json
{
"lsd":[
{
"lsdcode":"A004",
"lsdname":"双榆树店",
"lsdwg":"193.168.4.254",
"lsdfwq": "193.168.4.3"
},
{
"lsdcode":"A026",
"lsdname":"玉泉路店",
"lsdwg":"193.168.26.254",
"lsdfwq": "193.168.26.2"
},
{
"lsdcode":"A035",
"lsdname":"学院路店",
"lsdwg":"193.168.35.254",
"lsdfwq": "193.168.35.2"
},
{
"lsdcode":"A099",
"lsdname":"测试店",
"lsdwg":"172.16.10.189",
"lsdfwq": "193.168.35.2"
},
{
"lsdcode":"A799",
"lsdname":"测试店2",
"lsdwg":"172.16.10.213",
"lsdfwq": "193.168.35.2"
}
]
}
ping.py
```python
#--coding:GBK --
import os
import json
import re
import datetime,time
# 获取当前系统日期时间
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 打开连锁店json数据
with open('js/liansuodian.json','r') as f:
data = json.load(f)
def yunXing():
# 遍历liansuodian.json文件,去处网关地址
for item in data['lsd']:
wgip = item['lsdwg']
# 通过ping命令拼liansuodian.json内的网关地址
command = os.popen("ping -n 1 " + wgip)
# 获取拼输出结果
pin = command.read()
# 通过断网字符串判断ip地址是否互通
if "请求超时" in pin or "无法访问目标主机" in pin:
p = item['lsdcode'] + ',' + item['lsdname'] + ',' + item['lsdwg']
# p = '\''+ item['lsdcode'] + '\''+',' + '\''+item['lsdname']+ '\''+ ',' + '\''+item['lsdwg']+'\''
# bytime = re.findall(r'时间=(\w)', pin, re.M)
#
# diushi = re.findall(r'丢失 = (\w+)*', pin, re.M)
print(p,'网络不通')
p2 = {}
douhao = ','
p2['lsdcode'] = item['lsdcode']
p2['lsdname'] = item['lsdname']
p2['lsdwg'] = item['lsdwg']
print(p2)
# print(item['lsdname'])
with open('log/lixian.json','w') as f:
# 定位文件
# f.seek(0)
# 清除文件
# f.truncate()
f.write('{\n"lsd":[\n')
json_res = json.dump(p2,f,indent=4,ensure_ascii=False)
f.write('\n]\n}')
else:
# 网络通
p = item['lsdcode'] + ',' + item['lsdname'] + ',' + item['lsdwg']+ ',' + now
bytime = re.findall(r'时间=(\w)', pin, re.M)
# print(bytime)
diushi = re.findall(r'丢失 = (\w+)*', pin, re.M)
# print(diushi)
int_bytime = int(bytime[0])
if int_bytime > 3:
print(p,'网络延时')
with open('log/yanshi.txt', 'r+') as file:
file.truncate(0)
file.write(p + "\n")
file.close()
else:
print(p,'网络正常')
# print(diushi)
while True:
yunXing()
# 5分钟循环执行一次
time.sleep(300)