linux命令调用python脚本

# encoding: utf-8
"""
@Author   : vn53iiw
@File     : dataload_retransmit_main.py
@Project  : Bitbucket_Projects
@Time     : 2023/6/6 15:21
@Version  : 0.0.2
参数以 -参数名称 字符串的形式写入
"""
import argparse
import os
import sys
from datetime import datetime
import pandas as pd
sys.path.append("/u/users/vn55gxn/py_local")
# from dataload_retransmit import work
# from argparse_test02 import repalce_file
from cloud_tool.mapping_replace_quanci_from import repalce_file

parser = argparse.ArgumentParser(description='该程序用来重刷dataload的历史数据', epilog="para(注意不要存在换行)格式为:src_db|src_tb|dest_db|dest_tb|partition_value|db_connection_code")
parser.add_argument('-source', type=str, default="", help="替换_来源_文本的文件加目录")
parser.add_argument('-target', type=str, default="", help="替换_目标_存放的文件加目录")
# parser.add_argument('-paras', type=str, default="", help="多个para,用&&拼接,最外层用英文双引号")
# parser.add_argument('-user', type=str, default=None, help="指定执行用户")
# parser.add_argument('-isemail', type=str, default=False, help="自定义是否发送邮件,默认不发送")
# parser.add_argument('-iswechat', type=str, default=False, help="自定义是否发送企业微信,默认不发送")
# parser.add_argument('-exception_throw', type=str, default=None, help="自定义设置程序是否抛出异常,优先级比mapping配置表中exception_throw字段高")
# parser.add_argument('-retry_dict', type=str, default=None, help="自定义设置需要重跑的失败分区组合成的json")
# parser.add_argument('-htype', type=str, default="day", help="指定输入的partition_value对应的hive_partition_type的值,目前只支持天,月,沃尔玛周,数值分区的区间类型"\
#                                                             '/opt/anaconda3/bin/python dataload_retransmit_main.py -para "src_db|src_tb|dest_db|dest_tb|partition_value|db_connection_code"'
#                     )
args = parser.parse_args()
# assert  args.para, "请添加para 参数"
# para = (args.para.split("|") if args.para else "")
path_sql_file      = args.source
path_target_file   = args.target
# path_excle_file    = "/u/users/vn55gxn/py_file/python_source_file_excle/python_repace.xlsx"
path_excle_file    = "/tmp/vn55gxn/python_repace.xlsx"

if __name__ == '__main__':
    # 读取excle 的数据映射成dict
    var_file_dataframe = pd.read_excel(path_excle_file,sheet_name='参数替换')
    var_file_dataframe =var_file_dataframe.fillna("")  # 处理excel表里面空白读取出来的nan,转换成空字符串""
    # dataframe 去重保留前面的第一行,优先取商品域上云的表
    var_dataframe_distinct = var_file_dataframe.drop_duplicates(subset = ['source'], keep ='first')
    var_dict_mapping = var_dataframe_distinct.set_index('source')['target'].to_dict()

    table_file_dataframe = pd.read_excel(path_excle_file,sheet_name= '表替换')
    table_file_dataframe =table_file_dataframe.fillna("")
    # dataframe 去重保留前面的第一行,优先取商品域上云的表
    table_dataframe_distinct = table_file_dataframe.drop_duplicates(subset = ['source'], keep ='first')
    table_dict_mapping = table_dataframe_distinct.set_index('source')['target'].to_dict()

    # print(dict_mapping)
    # print(table_dict_mapping)
    list_dir = os.listdir(path_sql_file)

    for i in list_dir:
        path_sql_file_dtl = path_sql_file + r"/" + i
        path_target_file_dtl = path_target_file + r"/" + i
        #替换开始
        strat = datetime.now()
        repalce_file(path_sql_file_dtl,path_target_file_dtl,var_dict_mapping,table_dict_mapping)  #参数替换,必须为第一个不能调换顺序,因为会先清空表
        edn = datetime.now()
        print(path_target_file_dtl.ljust(100) + " 已完成 用时:" + format((edn-strat).seconds) +"s")
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值