# 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. ORA-00001: unique constraint (string.string) violated 违反唯一约束条件(.)

    ORA-00001: unique constraint (string.string) violated   ORA-00001: 违反唯一约束条件(.) Cause: An UPDATE or I ...

  2. git克隆指定分支到本地

    我们每次使用命令 git clone https://xxx.com/android-app.git 默认 clone 的是这个仓库的 master 分支. 使用Git下载指定分支命令为:git cl ...

  3. 多测师讲解selenium _下拉框的定位_高级讲师肖sir

    from selenium import webdriver from selenium.webdriver.support.ui import Select#导入类from time import ...

  4. 【贪心算法】HDU 5969 最大的位或

    题目内容 Vjudge链接 给出一个闭区间,找该区间内两个数,使这两个数的按位或最大. 输入格式 包含至多\(10001\)组测试数据. 第一行有一个正整数,表示数据的组数. 接下来每一行表示一组数据 ...

  5. 利用RNN进行中文文本分类(数据集是复旦中文语料)

    利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) 1.训练词向量 数据预处理参考利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) ,现在我们有了分词 ...

  6. 第三十四章 Linux常规练习题(一)参考答案

    一.练习题一 1.超级用户(管理员用户)提示符是___#_,普通用户提示符是___$_. 2.linux关机重启的命令有哪些 ? 关机命令 重启命令 shutdown -h now shutdown ...

  7. spring-boot-route(二十一)quartz实现动态定时任务

    Quartz是一个定时任务的调度框架,涉及到的主要概念有以下几个: Scheduler:调度器,所有的调度都由它控制,所有的任务都由它管理. Job:任务,定义业务逻辑. JobDetail:基于Jo ...

  8. python随机生成经纬度(用于爬虫参数伪造)

    import random import math def generate_random_gps(base_log=None, base_lat=None, radius=None): radius ...

  9. 《3D打印与工业制造》个人总结 —— 周吉瑞

    <3D打印与工业制造>个人总结 ---- 周吉瑞 JERRY_Z. ~ 2020 / 10 / 24 转载请注明出处!️ 目录 <3D打印与工业制造>个人总结 ---- 周吉瑞 ...

  10. 实战三:将nacos作为配置中心

    一,引入nacos配置中心依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId&g ...