需求:
用python调用脚本执行spark-SQL,每次记录开始调用的时间与结束调用的时间,并将上次结束时间作为参数传递给脚本,执行完成后将开始时间与结束时间更新至ini;
Python操作ini文件
.ini 是windows的系统配置文件所采用的存储格式。python3中使用configParser模块进行解析与操作。
configParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项(item)。
ini文件配置
首先在python文件相同目录下创建一个ini文件,文件内容如下:
[table1]
creationtime = null
starttime = 2020-05-10 15:59:03
endtime = 2020-05-10 15:59:04
[table2]
creationtime = null
starttime = 2020-05-10 15:59:03
endtime = 2020-05-10 15:59:04
其中[]的内容为section,即一组内容;section下的k-v值如creationtime 、starttime、endtime为item,section下可以有多个item。
注意:section名不能重复,item需要通过section去定位查找。
configParser解析ini
使用configParser的步骤:
1.导入configParser模块
2.创建conf对象
3.使用conf对象读取ini文件
# 导入 configparser
import configparser
# 创建管理对象
conf = configparser.ConfigParser()
# 读ini文件
curpath = os.path.dirname(os.path.realpath(__file__))
cfgpath = os.path.join(curpath, 'test.ini')
conf.read(cfgpath, encoding='utf-8')
添加section
conf.add_section("table3")
删除
删除section:
conf.remove_section('table2')
删除item:
conf.remove_option("table1", "starttime")
修改
修改通过set方法,三个参数分别为(section名,item名,item值)
conf.set("table1","startTime","2020-05-10 15:59:03")
conf.set("table1","endTime","2020-05-10 15:59:03")
查询
对于不同类型的item value使用不同的get方法,如getint、getBoolean等,通常直接使用get方法获得string类型的value。
conf.get("table1","starttime")
写入ini
无论是增删改那种操作,都不会立即修改ini文件,只有调用write方法后,才会写入文件。写入文件有两种方式,追加写和重写(还有其他选项如r+等,。但是只关心这两个区别。其实除a以外,全是全量刷写)。
#cfgpath为ini文件路径
#追加写
conf.write(open(cfgpath, "a"))
#全量刷写
conf.write(open(cfgpath, "w"))