鱼C论坛

 找回密码
 立即注册
查看: 2376|回复: 4

[已解决]textfsm模板问题

[复制链接]
发表于 2023-3-22 14:39:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #!/bin/python
  2. # -*- encoding=utf-8 -*-
  3. import openpyxl
  4. from textfsm import TextFSM
  5. from io import BytesIO
  6. # 打开txt文件
  7. with open('var_data.txt', 'r') as f:
  8.     data = f.read()
  9.    
  10. # 打开Excel文件并创建工作表
  11. wb = openpyxl.Workbook()
  12. ws = wb.active
  13. # 设置表头
  14. header = ['信息', '值']
  15. ws.append(header)
  16. # 解析txt文件内容
  17. template = '''Value Name=(.*?)\S+Value=(.*?)\n'''
  18. print(template)
  19. re_table = TextFSM(BytesIO(template.encode('utf-8')))
  20. data = data.strip()
  21. # Debug模式
  22. debug = True
  23. if debug:
  24.     re_table.debug = True
  25.     for line in data.split('\n'):
  26.         re_table._Debug(line)
  27. fsm_results = re_table.ParseText(data)
  28. # 将结果写入Excel工作表
  29. for result in fsm_results:
  30.     ws.append(result)
  31. # 保存Excel文件
  32. wb.save('result.xlsx')
复制代码


var_data.txt文本数据如下,要求=前面的写如excel第一列,后面的写入excel第二列,
aa=bb
cc==dd
ee=ff

以上脚本报如下错误,提示18行template格式有问题
  1.   File "write_in.py", line 19, in <module>
  2.     re_table = TextFSM(BytesIO(template.encode('utf-8')))
  3.   File "/usr/local/lib/python3.4/dist-packages/textfsm/parser.py", line 584, in __init__
  4.     self._Parse(template)
  5.   File "/usr/local/lib/python3.4/dist-packages/textfsm/parser.py", line 682, in _Parse
  6.     self._ParseFSMVariables(template)
  7.   File "/usr/local/lib/python3.4/dist-packages/textfsm/parser.py", line 742, in _ParseFSMVariables
  8.     raise TextFSMTemplateError('No Value definitions found.')
  9. textfsm.parser.TextFSMTemplateError: No Value definitions found.
复制代码
最佳答案
2023-3-22 15:26:06
liyuping-fisher 发表于 2023-3-22 14:48
模板直接是这样template = '''Value Name=(.*?)\S+Value=(.*?)\n'''匹配的

#!/bin/python
# -*- encoding=utf-8 -*-
import openpyxl
from textfsm import TextFSM
from io import BytesIO
# 打开txt文件
with open('var_data.txt', 'r') as f:
    data = f.read()
   
# 打开Excel文件并创建工作表
wb = openpyxl.Workbook()
ws = wb.active
# 设置表头
header = ['信息', '值']
ws.append(header)
# 解析txt文件内容

# 模板应该这样写
template = '''Value Name (.+)
Value Value (.+)

Start
  ^${Name}=${Value} -> Record
'''

print(template)
re_table = TextFSM(BytesIO(template.encode('utf-8')))
print(dir(re_table))
print(re_table)
data = data.strip()

# 这几行代码是想做什么,TextFSM 对象没有 _Debug 方法
'''
# Debug模式
debug = True
if debug:
    re_table.debug = True
    for line in data.split('\n'):
        re_table._Debug(line)
'''

fsm_results = re_table.ParseText(data)
# 将结果写入Excel工作表
for result in fsm_results:
    ws.append(result)
# 保存Excel文件
wb.save('result.xlsx')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-3-22 14:44:32 | 显示全部楼层
模板什么样?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-22 14:48:13 | 显示全部楼层

模板直接是这样template = '''Value Name=(.*?)\S+Value=(.*?)\n'''匹配的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 15:26:06 | 显示全部楼层    本楼为最佳答案   
liyuping-fisher 发表于 2023-3-22 14:48
模板直接是这样template = '''Value Name=(.*?)\S+Value=(.*?)\n'''匹配的

#!/bin/python
# -*- encoding=utf-8 -*-
import openpyxl
from textfsm import TextFSM
from io import BytesIO
# 打开txt文件
with open('var_data.txt', 'r') as f:
    data = f.read()
   
# 打开Excel文件并创建工作表
wb = openpyxl.Workbook()
ws = wb.active
# 设置表头
header = ['信息', '值']
ws.append(header)
# 解析txt文件内容

# 模板应该这样写
template = '''Value Name (.+)
Value Value (.+)

Start
  ^${Name}=${Value} -> Record
'''

print(template)
re_table = TextFSM(BytesIO(template.encode('utf-8')))
print(dir(re_table))
print(re_table)
data = data.strip()

# 这几行代码是想做什么,TextFSM 对象没有 _Debug 方法
'''
# Debug模式
debug = True
if debug:
    re_table.debug = True
    for line in data.split('\n'):
        re_table._Debug(line)
'''

fsm_results = re_table.ParseText(data)
# 将结果写入Excel工作表
for result in fsm_results:
    ws.append(result)
# 保存Excel文件
wb.save('result.xlsx')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-22 15:34:12 | 显示全部楼层
isdkz 发表于 2023-3-22 15:26
#!/bin/python
# -*- encoding=utf-8 -*-
import openpyxl

你可真是大神,收下我的膝盖,第一标红有效,第二标红其实是我网上查的说可以debug,确实我也没debug到可删掉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 14:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表