python_sys.argv的使用
# sys.argv练习
# 写一个python脚本,在cmd里执行
# python xxx.py 用户名 密码 cp 文件路径 目的地址
# python xxx.py alex sb cp D:\python_22\day22\1.内容回顾.py D:\python_22\day21
# python xxx.py alex sb rm D:\python_22\day22
# python xxx.py alex sb rename D:\python_22\day22 D:\python_22\day23
import os
import sys
import shutil
if len(sys.argv) >= 5:
if sys.argv[1] =='alex' and sys.argv[2] == 'sb':
if sys.argv[3] == 'cp' and len(sys.argv) == 6:
if os.path.exists(sys.argv[4]) and os.path.exists(sys.argv[5]):
filename = os.path.basename(sys.argv[4])
path = os.path.join(sys.argv[5],filename)
shutil.copy2(sys.argv[4],path)
elif sys.argv[3] == 'rm' and len(sys.argv) == 5:
if os.path.exists(sys.argv[4]):
if os.path.isfile(sys.argv[4]):
os.remove(sys.argv[4])
else:
shutil.rmtree(sys.argv[4])
elif sys.argv[3] == 'rename'and len(sys.argv) == 6:
if os.path.exists(sys.argv[4]):
os.rename(sys.argv[4],sys.argv[5])
else:
print('您输入的命令无效')
将脚本改写成下面的样子:
import os
import sys
import getopt
import shutil
class Fileoperation(object):
def __init__(self,username,psw,func_name,path1='',path2=''):
self.username=username
self.psw=psw
self.func_name=func_name
self.path1=path1
self.path2=path2
def cp(self):
if os.path.exists(self.path1) and os.path.exists(self.path2):
filename = os.path.basename(self.path1)
target_path = os.path.join(self.path2,filename)
shutil.copy2(self.path1,target_path)
else:
print('path1或path2不存在')
def rm(self):
if os.path.exists(self.path1):
if os.path.isfile(self.path1):
os.remove(self.path1)
else:
shutil.rmtree(self.path1)
else:
print('path1目录不存在')
def rename(self):
if os.path.exists(self.path1):
os.rename(self.path1,self.path2)
def main(self):
if self.func_name == "cp":
Fileoperation.cp(self)
elif self.func_name == "rm":
Fileoperation.rm(self)
elif self.func_name == "rename":
Fileoperation.rename(self)
else:
print('func_name有误')
if __name__ == '__main__':
username=''
psw=''
func_name =''
path1=''
path2=''
argv = sys.argv[1:]
try:
opts, args = getopt.getopt(argv, "h", ["username=","psw=","func_name=", "path1=", "path2="])
except getopt.GetoptError:
print('有错误发生','collin_file_operation.py --username username --psw psw --path1 source path --path2 target path')
sys.exit(2)
for opt, arg in opts:
if opt == "-h": # 提示,帮助功能
print('collin_file_operation.py --username username --psw psw --path1 source path --path2 target path')
sys.exit()
elif opt == "--username":
username = arg
elif opt == "--psw":
psw = arg
elif opt == "--func_name":
func_name = arg
elif opt == "--path1":
path1 = arg
elif opt == "--path2":
path2 = arg
# print(process_name + "--"+log_path+"--"+excel_path+"--"+new_excel_path+"")
handle = Fileoperation(username,psw,func_name,path1,path2)
handle.main()
cmd 执行的命令:
复制文件:
C:\Users\12078\PycharmProjects\OldBoy\Day22>
python collin_file_operation.py --username=alex --psw=123 --func_name=cp --path1=C:\Users\12078\PycharmProjects\OldBoy\Day22\test\targethaha.py --path2=C:\Users\12078\PycharmProjects\OldBoy\Day22\test2
移除文件:
C:\Users\12078\PycharmProjects\OldBoy\Day22>
python collin_file_operation.py --username=alex --psw=123 --func_name=rm --path1=C:\Users\12078\PycharmProjects\OldBoy\Day22\test\targethaha.py
重命名文件:
C:\Users\12078\PycharmProjects\OldBoy\Day22>
python collin_file_operation.py --username=alex --psw=123 --func_name=rename --path1=C:\Users\12078\PycharmProjects\OldBoy\Day22\test2\targethaha.py --path2=C:\Users\12078\PycharmProjects\OldBoy\Day22\test2\target_hihi.py
之前写的uipath 调用 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()
python_sys.argv的使用的更多相关文章
- Python_sys.argv 命令行参数获取使用方法
import sys print(sys.argv) """ 获取命令行参数 输入 python3 sys.argv_demo.py 输出: ['argv.py'] 输入 ...
- execve(file, argv, env)参数argv获取字符串个数
/* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU ...
- Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
- main(int argc, char **argv)参数解读
main(int argc, char **argv)参数解读 编译生成了test.exe ,然后在控制台下相应的目录下输入:test 1 2 3 4 argc就是一个输入了多少个参数,包括te ...
- int main( int argc, char **argv)
1.参数 (有时参数是void) argc是程序运行时参数个数 argv是存储参数的数组,可以用char* argv[],也可以用char **argv. 例如编译一个hello.c的程序 1 #in ...
- Pyqt5 获取命令行参数sys.argv
大家有没有注意到,很多软件都能接收第三方应用触发命令行参数,根据参数打开想要的效果. 在windows任务管理器调取命令行列,我们同样能看到进程中有好多是带有参数的. 现在,我们用Pyqt5 (Py3 ...
- sys.argv
import sys i=0 print len(sys.argv) while i < len(sys.argv): print 'sys.argv[%d]:%s' %(i,sys.argv[ ...
- opencv用imread( argv[1], 1)读取图片
显示一幅图:主要是运用功能:imread namedWindow imshowimread:从字面意思我们就可以看懂,用来读取图片的:namedWindow:显然,我们也可以看到这是用来命名窗口名称的 ...
- int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数, 比如: int main(int argc, ...
随机推荐
- spring框架bean注入
今天学习了spring框架,刚刚入门简单的了解了spring并学习了bean的注入IOC:IOC(Inversion of Control,控制反转)不是什么技术,而是一种设计思想.它的目的是指导我们 ...
- ubuntu 19.10 中防火墙iptables配置
$sudo which iptables /usr/sbin/iptables说明有安装 如果没有安装,那么使用sudo apt-get install iptables 安装. 刚装机,是这个样 ...
- axio跨域请求,vue中的config的配置项。
这是我用 vue cli 脚手架搭建的跨域.以上是可以请求到的.
- 多测师讲解python __for 循环___高级讲师肖sir
横向输出 1.遍历字符串 2.遍历列表 3.遍历元组 方法一: 方法二: 方法三: #循环字典:方法一# dict1={"name":"zhihao",&quo ...
- JavaWeb01_html&css
一. html简介 1. 什么是html ①. HyperText Markup Language:超文本标记语言,是最基本的网页语言 ②. 超文本:超出文本范畴 ③. 标记:标记就是标签,html所 ...
- linux安装jdk-centos7系统:
1 官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
- Python之包的相关
包的产生: 由于模块不断更新,越写越大,仅用单个py文件会使模块逻辑不够清晰,所以需要将模块的不同功能放入不同的py文件,然后将所有py文件放在一个目录内,这个目录就是包 包就是一个包含用__init ...
- C# 面试前的准备_基础知识点的回顾_04
1.Session和Cookie的使用区别 很容易回答的就是Session在服务器端,存储的数据可以较大容量,比如我们存一个Table,上千条数据. Cookie保存在客户端,安全系数低,不能放重要的 ...
- CentOS 8 Yum安装ansible
ansible的安装 直接yum安装ansible会报错,需要先安装epel源. ansible的安装来源于epel仓库,因此在安装前需确保安装了正确的epel源. yum install -y ep ...
- JS实现鼠标移入水波效果
前言 最近比较沉迷JS,所以我现在来做个鼠标的交互效果 HTML <div style="border-radius;position:relative;width:800px;hei ...