# 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的使用的更多相关文章

  1. Python_sys.argv 命令行参数获取使用方法

    import sys print(sys.argv) """ 获取命令行参数 输入 python3 sys.argv_demo.py 输出: ['argv.py'] 输入 ...

  2. execve(file, argv, env)参数argv获取字符串个数

    /* Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU ...

  3. Bash 中的 $0 在什么时候不是 argv[0]

    每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...

  4. main(int argc, char **argv)参数解读

    main(int argc, char **argv)参数解读 编译生成了test.exe ,然后在控制台下相应的目录下输入:test  1  2  3 4 argc就是一个输入了多少个参数,包括te ...

  5. int main( int argc, char **argv)

    1.参数 (有时参数是void) argc是程序运行时参数个数 argv是存储参数的数组,可以用char* argv[],也可以用char **argv. 例如编译一个hello.c的程序 1 #in ...

  6. Pyqt5 获取命令行参数sys.argv

    大家有没有注意到,很多软件都能接收第三方应用触发命令行参数,根据参数打开想要的效果. 在windows任务管理器调取命令行列,我们同样能看到进程中有好多是带有参数的. 现在,我们用Pyqt5 (Py3 ...

  7. sys.argv

    import sys i=0 print len(sys.argv) while i < len(sys.argv): print 'sys.argv[%d]:%s' %(i,sys.argv[ ...

  8. opencv用imread( argv[1], 1)读取图片

    显示一幅图:主要是运用功能:imread namedWindow imshowimread:从字面意思我们就可以看懂,用来读取图片的:namedWindow:显然,我们也可以看到这是用来命名窗口名称的 ...

  9. int main(int argc,char* argv[])详解

    argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数, 比如:       int   main(int   argc,   ...

随机推荐

  1. JavaScript常用对象介绍

    目录 对象(object) 对象的创建方式 点语法 括号表示法 内置对象 Array 数组创建方式 检测数组 转换方法 分割字符串 栈方法 队列方法 重排序方法 操作方法 位置方法 迭代方法 Stri ...

  2. 迎难而上,QPS提高22+倍

    简介 记录1次性能提升的经历,它最大的挑战不在于性能提升,而在于时间急,涉及的面广(比如:机房F5的SSL/TLS性能,机房互联网流量费和项目投入产出比等).性能指标:至少支持10K QPS,10ms ...

  3. thinkpad怎么设置u盘启动

    1.按下笔记本的开机键,当屏幕出现"Press F1 for ThinkPad BIOS Setup Utility"提示时,迅速按下f1键,此时系统就自动进入到ThinkPad的 ...

  4. vue-awesome-swiper ---移动端h5 swiper 和 tab 栏选项联动效果实现

    很久之前做小程序时有个类似每日优鲜里储值卡充值界面里的 卡轮播和价格tab栏联动效果,当时觉得新鲜做出来之后也没当回事.直到今天又遇到了一个类似的功能,所以想着总结经验. 实现效果如下图: 图解:点击 ...

  5. Luogu P4271 [USACO18FEB]New Barns P

    题意 给一个一开始没有点的图,有 \(q\) 次操作,每次为加点连边或者查询一个点到连通块内所有点的距离最大值. \(\texttt{Data Range}:1\leq q\leq 10^5\) 题解 ...

  6. STM32入门系列-STM32最小系统介绍

    STM32最小系统组成 单片机最小系统,也就是能够使得单片机正常运行程序,最少需要连接哪些器件.一般来说,STM32最小系统由四部分组成: 电源电路 复位电路 晶振电路 下载电路 STM32单片机由A ...

  7. struct.pack()和struct.unpack() 详解(转载)

    原文链接:https://blog.csdn.net/weiwangchao_/article/details/80395941 python 中的struct主要是用来处理C结构数据的,读入时先转换 ...

  8. springboot + post 中文乱码

    去检查你的 filter 配置,是否配置了一个最高优先级的 filter, 这个最高优先级的 filter 会影响 springboot 自动配置的 CharacterEncodingFilter.原 ...

  9. zookeeper单机/集群安装和使用

    简书原文地址:https://www.jianshu.com/p/88194fde9a07 或者关注我的公众号"进阶者euj" 前提是本机有jdk 一.单机安装 1.去官网下载zo ...

  10. Ideas and Tricks

    1.树上拓扑排序计数 结论$\dfrac{n!}{\prod\limits_{i=1}^n size_i}$ 对于节点$i$,其子树随意排序的结果是$size[i]!$ 但$i$需要排在第一位,只有$ ...