字符串变成执行代码
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。 本文鏈接:https://blog.csdn.net/weixin_40894428/article/details/80762138
相信很多人都有這樣的困惑,就是想將另外一個文件的傳來的字符串轉換為代碼,然后百度,google,找了很久找到了c++, java的方法,就是沒有python的解決方法,筆者決定寫這篇博客幫助一下大家,其實很簡單。那在這里我把自己的經歷寫出來把,筆者是一個小小的python程序員,一天技術總監要求我寫一個代替print重定向的模塊,這模塊能把錯誤信息保存在一個文件上而不是僅僅打印出來,筆者在網上查找了資料,就用了Configarser模塊(具體用法點擊傳送門Configarser),看了一下資料后,馬上入手開始寫代碼。我的配置文件如下:
log.cfg
[console] console = logging.getLogger().addHandler(console)[grade] ;grade = console.setLevel(logging.CRITICAL) ;grade = console.setLevel(logging.ERROR) ;grade = console.setLevel(logging.WARNING) ;grade = console.setLevel(logging.INFO) grade = console.setLevel(logging.DEBUG) ;grade = console.setLevel(logging.NOTSET)[savefile] # write error infomation to file file = logging.CRITICAL# don't save error infomation to file ;file = logging.NOTSET[default] console = 0 grade = console.setLevel(logging.DEBUG) file = logging.NOTSET
我需要把配置文件log.cfg中grade = console.setLevel(logging.DEBUG)傳到main上當代碼,可是傳過來的是字符串來的,這可花了我不少時間,最后才發現可以用eval()來解決這個問題,我看了很多eval的資料都沒有說到eval()可以把字符串變成可執行代碼的作用。最后貼上代碼
main.py
從log.cfg傳過來的字符串直接當代碼使用了。
try: eval("print(1>2)") except: print('error')總結
- 上一篇: 正则笔记
- 下一篇: 正则语法完全正则表达式手册_语法格式重点