cmd,py脚本,py编译的exe,uipath及uibot对它们的调用
UIPATH调用Python编译程序exe
好处:
1)code不以可编辑的状态被用户接触,对于不懂反编译的一般用户,可提升一定的代码安全性;
2)不需要用户机器上安装 python环境。
3)可以将能够执行不同任务的脚本编译成同一个exe程序,通过传入不同参数实现不同任务。
1).生成并调用单任务 exe程序:
详见之前的博客:https://blog.csdn.net/qq_24937551/article/details/105517535
- 准备单任务python脚本 2. 将仅执行单任务的脚本打包成exe 3. UIPATH调用exe
2).生成并调用多任务 exe程序:
- 准备多任务python脚本 2. 将可执行多任务的脚本打包成exe 3. UIPATH调用exe
- UIPATH 调用 exe或者python脚本,实际上是使用vb.net来调用cmd命令行来执行exe或脚本,所以难点在于参数的传递和解析,尤其是当脚本中的函数需要多种类型的参数,比如位置参数,关键字参数等。
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
import sys,getopt # 用来解析参数的两个库
class HandleData():
def __init__(self,process_name,log_path='',excel_path='',new_excel_path=''):
self.process_name=process_name
self.log_path=log_path
self.excel_path=excel_path
self.new_excel_path=new_excel_path
def deal_with_data(self):
file_obj=open(self.excel_path)
df=pd.read_csv(file_obj)
# df=pd.read_csv(self.excel_path)
df=df.reindex(columns=['CNUM','COMPANY','C_col','D_col','E_col','F_col','G_col','H_col'],fill_value=None)
df.rename(columns={'COMPANY':'Company_New'}, inplace = True)
df=df.dropna(axis=0,how='all')
df['CNUM'] = df['CNUM'].astype('int32')
df = df.drop_duplicates(subset=['CNUM', 'Company_New'], keep='first')
df.to_csv(self.new_excel_path,index=False,encoding='GBK')
file_obj.close()
def writeLog(self):
with open(self.log_path,"a") as logfile:
logfile.write("\nthat's a test log message")
def writeEventLog(self):
with open(r"C:\Users\12078\Desktop\UIPATH_test\0419\EventLogs_Bot1.txt","a") as logfile:
logfile.write("\nno function found" + self.process_name)
def mainprocess(self):
if self.process_name=="deal_with_data":
HandleData.deal_with_data(self)
elif self.process_name=="writeLog":
HandleData.writeLog(self)
else:
HandleData.writeEventLog(self)
if __name__ == "__main__":
process_name=""
log_path = ""
excel_path = ""
new_excel_path = ""
argv=sys.argv[1:]
try:
opts,args = getopt.getopt(argv,"h",["process_name=","log_path=","excel_path=","new_excel_path="])
except getopt.GetoptError:
print('cnum_company_data0418.py --process_name processname str --log_path logpath str --excel_path datafilepath str --new_excel_path outputfilepath str')
sys.exit(2)
for opt, arg in opts:
if opt == "-h":
print('cnum_company_data0418.py --process_name processname str --log_path logpath str --excel_path datafilepath str --new_excel_path outputfilepath str')
sys.exit()
elif opt == "--process_name":
process_name = arg
elif opt == "--log_path":
log_path = arg
elif opt =="--excel_path":
excel_path = arg
elif opt =="--new_excel_path":
new_excel_path = arg
# print(process_name + "--"+log_path+"--"+excel_path+"--"+new_excel_path+"")
handle=HandleData(process_name,log_path,excel_path,new_excel_path)
handle.mainprocess()
cmd执行python脚本测试效果:
测试生成log message的功能:
C:\Users\12078\Desktop\UIPATH_test\0419>python cnum_company_data0419.py --process_name=writeLog --log_path=C:\Users\12078\Desktop\UIPATH_test\0419\mylog.txt
测试处理excel/csv数据的功能:
C:\Users\12078\Desktop\UIPATH_test\0419>python cnum_company_data0419.py --process_name=deal_with_data --excel_path=C:\Users\12078\Desktop\UIPATH_test\0419\CNUM_COMPANY.csv --new_excel_path=C:\Users\12078\Desktop\UIPATH_test\0419\out.csv
经过测试,脚本没有问题
以上程序也可以这样实现:(知识点:面向对象,反射,元组解包,不定长参数的函数)
# -*- coding: UTF-8 -*-
import pandas as pd
import sys
from pandas import DataFrame,Series
class HandleData():
def deal_with_data(self,paths):
excel_path,new_excel_path=paths
file_obj=open(excel_path)
df=pd.read_csv(file_obj)
df=df.reindex(columns=['CNUM','COMPANY','C_col','D_col','E_col','F_col','G_col','H_col'],fill_value=None)
df.rename(columns={'COMPANY':'Company_New'}, inplace = True)
df=df.dropna(axis=0,how='all')
df['CNUM'] = df['CNUM'].astype('int32')
df = df.drop_duplicates(subset=['CNUM', 'Company_New'], keep='first')
df.to_csv(new_excel_path,index=False,encoding='GBK')
file_obj.close()
def writeLog(self,log_path):
log_path=log_path[0]
with open(log_path,"a") as logfile:
logfile.write("\nthat's a test log message")
def writeEventLog(self,p):
process_name,content=p
with open(r"C:\Users\12078\Desktop\uibot\pytest_mutiply.txt","a") as logfile:
logfile.write("\nno function found" + process_name+"--"+content)
def main(f,*args): # *args表示不定长参数,会将不定长参数打包成元组 args
h=HandleData()
if hasattr(h,f):
getattr(h,f)(args)
if __name__ == "__main__":
# 测试 writeEventLog
# main('writeEventLog','fuc_test','ttesthahah')
# 测试 writeLog
# main('writeLog',r"C:\Users\12078\Desktop\uibot\log_test.txt")
# 测试 deal_with_data
# main('deal_with_data',r"C:\Users\12078\Desktop\uibot\pytest\CNUM_COMPANY.csv",r"C:\Users\12078\Desktop\uibot\pytest\output.csv")
# cmd 执行脚本时:
fuc_name=sys.argv[1]
argvs=sys.argv[2:]
main(fuc_name,*argvs) # *argvs表示解包列表,将列表元素转为独立的个体
cmd执行上面的python脚本测试效果:
测试生成log message的功能:
C:\Users\12078>python C:\Users\12078\Desktop\uibot\pytest\pydatahandle.py writeEventLog fuc_test testhahah
C:\Users\12078>python C:\Users\12078\Desktop\uibot\pytest\pydatahandle.py writeLog C:\Users\12078\Desktop\uibot\mylog.txt
测试处理excel/csv数据的功能:
C:\Users\12078>python C:\Users\12078\Desktop\uibot\pytest\pydatahandle.py deal_with_data C:\Users\12078\Desktop\uibot\pytest\CNUM_COMPANY.csv C:\Users\12078\Desktop\uibot\pytest\out.csv
经过测试,脚本没有问题
cmd执行exe编译任务:
cd C:\Users\12078\Desktop\UIPATH_test\0419
C:\Users\12078\Desktop\UIPATH_test\0419>pyinstaller cnum_company_data0419.py
或:
cd C:\Users\12078\Desktop\uibot\pytest
C:\Users\12078\Desktop\uibot\pytest>pyinstaller pydatahandle.py
使用 dist目录下的 exe程序
UIPATH调用 exe执行多任务:
1.总体框架:
2.第1次调用exe完成第一个任务:
3.第2次调用 exe完成第二个任务:
4.执行结果:
CMD调用 python编译的exe:
C:\Users\12078>start C:\Users\12078\Desktop\uibot\pytest\dist\pydatahandle\pydatahandle.exe writeEventLog fuc_test testhahah
C:\Users\12078>start C:\Users\12078\Desktop\uibot\pytest\dist\pydatahandle\pydatahandle.exe deal_with_data C:\Users\12078\Desktop\uibot\pytest\CNUM_COMPANY.csv C:\Users\12078\Desktop\uibot\pytest\out.csv
Uibot有启动应用程序的功能,但没有传入参数的设置,可以这样做:uibot调用 cmd,cmd执行启动 exe并传入参数的命令:
说明
1.Author: Collin_PXY ; wechat: pxy123abc
cmd,py脚本,py编译的exe,uipath及uibot对它们的调用的更多相关文章
- python2.7 串口操作方式 编译 .py为windows可运行exe文件
一 python操作串口 首先下载安装串口模块pyserial . 代码实现: import serial ser = serial.Serial('/dev/ttyUSB2', 115200) pr ...
- Python将py文件编译为exe的方法
使用PyCharm工具写好的Python程序脚本,怎么将.py文件编译为可执行的.exe文件 前提是已经安装了Python环境. 第一步:在PyCharm内下载安装pyinstalle库或使用CMD安 ...
- py脚本打包exe可执行文件
python3以上版本打包exe需要扩展软件:cx_freeze 下载地址:http://cx-freeze.sourceforge.net/ 1)安装后在\Python32\Scripts\cxfr ...
- 将.py脚本打包成.exe
https://www.cnblogs.com/wyl-0120/p/10823102.html 为了方便使用,通过pyinstaller对脚本进行打包成exe文件. pip3 install pyi ...
- cmd 运行py脚本,提示找不到xx模块
一.在学习Django+接口自动化测试,用Jenkins做定时任务,cmd运行脚本时提示 "找不到xx模块": 1.原因:Pycharm单独运行脚本时没问题,cmd运行找不到模块. ...
- generateScriptFile.py脚本使用过程中遇到的问题及解决
generateScriptFile.py脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- """ use case: p ...
- Pyinstaller通过spec文件打包py程序(多个py脚本)
Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程序打包为可执行文件,实现打包后的程序在没有python环境的机器上也可以运行.pyinstall ...
- cocos2d-x 2.1.4 使用create_project.py脚本创建项目+ant打包项目
1.创建项目:执行create_project.py脚本,进入Doc界面输入下面的命令: cd D:\cocos2d-x-2.1.4\cocos2d-x-2.1.4\tools\project-cre ...
- 把perl脚本编译成exe
来源:http://www.veryhuo.com/a/view/38338.html 今天想把 perl 脚本编译成 exe 以便脱离 perl 解释器独立运行.都可以生成PERL的PE文件,在PE ...
随机推荐
- Eating Peach (peach)
Description On this day, the little monkey went looking for food. He came to a rectangular peach gar ...
- 【LGR-070】洛谷 3 月月赛-官方题解
本次免费为大家提供[LGR-070]洛谷 3 月月赛的官方题解,点个赞再走呗! 代码就不上了,大家可以到别的博客上去找找!希望这篇博客能对你有所帮助!
- .Net Core 读取,导入 excel数据 officeopenxml
/// <summary> /// 导出Excel /// </summary> /// <param name="path">路径</p ...
- 2016-12-04---tiny412平台下的iconv库的移植问题
一.解决问题 在arm开发板上使用framebuff,在汉字显示时,因为只有gb2312的16*16的汉字字库,而ubuntu16.04默认 的编码方式时utf-8,因此需要进行转码(ut ...
- MeteoInfoLab脚本示例:读取文本文件
此例中的降水文本文件下载自"中国气象科学数据共享服务网"(http://cdc.nmic.cn/sksj.do?method=ssrjscp),其实是ESRI的文本格点数据格式.对 ...
- Git软件操作过程
一.下载 Git 二.下载Git小乌龟-TortoiseGit 三.汉化-去官网下载,官网地址 https://tortoisegit.org/download/
- centos 下安装redis 通过shell脚本
#! /bin/bash echo -e "开始安装redis服务\n" download_url=http://download.redis.io/releases/redi ...
- 第二十二章 Nginx性能优化
一.性能优化概述 1.我们需要了解 1.首先需要了解我们当前系统的结构和瓶颈,了解当前使用的是什么,运行的是什么业务,都有哪些服务,了解每个服务最大能支撑多少并发.比如nginx作为静态资源服务并发是 ...
- Python之dict字典详解
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...
- MVC单文件上传
前言 现在来写下最基础的单文件上传,完成后可以扩展成各种不同的上传方式 HTML <input id="Input_File" type="file" / ...