python中的命令行参数

python中有一个模块sys,sys.argv这个属性提供了对命令行参数的访问。命令行参数是调用某个程序时除程序名外的其他参数。

sys.argv是命令行参数的列表

len(sys.argv)是命令行参数的个数

下面我们用一个简单的例子来说明一下。

#!/usr/bin/python
#coding:utf-8
import sys ##加载sys这个模块。
for i in range(len(sys.argv)):
print "第%d个参数是:%s" % (i,sys.argv[i])
print

运行上面的脚本:

python argv.py 1 2 3

结果如下:

第0个参数是:argv.py

第1个参数是:1

第2个参数是:2

第3个参数是:3

从上面的脚本运行结果我们能看得出来第一个参数是脚本名本身也就是第0个参数。其余的一次类推。

有了这个sys.argv参数我们就可以向脚本传递一些我们想要用的参数。

另一个比较常用的模块os.path可以完成对路径的操作。它提供的函数可以完成管理和操作文件路径中的各个部分,获取文件或子目录信息,文件路径查询操作。

下面列出一些os模块中常用的函数:

函数名:                                 作用:

os.mkfifo('path/filename')/os.mknod('path/filename',mode,device)  创建命名管道/创建文件系统节点

os.remove('path/filename')                       删除文件

os.rename('path/filename1','path/filename2')/renames()        重命名文件

os.stat('path/filename')                        返回文件信息

os.symlink('path/filename','path/ln_filename')             创建符号链接

os.utime()                               更新时间戳

os.tmpfile()                               创建并打开('w+b')一个新的临时文件

os.walk()                                生成一个目录树下的所有文件名

目录/文件夹

os.chdir()/fchdir()           改变当前工作目录/通过一个文件描述符改变当前工作目录

chroot()                改变当前进程的根目录

listdir()                列出指定目录的文件

getcwd()/getcwdu()          返回当前工作目录/功能相同,但返回一个Unicode对象

mkdir()/makedirs()           创建目录/创建多层目录

rmdir()/removedirs()          删除目录/删除多层目录

访问/权限

access()        检验权限模式

chmod()        改变权限模式

chown()/lchown()   改变ower和group ID /功能相同,但不会跟踪链接

umask()       设置默认权限模式

文件描述符操作

open()        底层的操作系统open(对于文件,使用标准的内建open() 函数)

read()/write()     根据文件描述符读取/写入数据

dup()/dup2()      复制文件描述符号/功能相同,但是是复制到一个文件描述符设备号。

makedev()       从major和minor设备号创建一个原始设备号

major() /minor()    从原始设备号获得major/minor设备号

下面是os.path模块中的路径名访问的一些函数

函数描述

os.path.basename()   去掉目录路径,返回文件名

os.path.dirname()     去掉文件名,返回目录路径

os.path.join()       将分离的各部分组合成一个路径名

os.path.split()       返回(dirname(),basename())元组

os.path.splitdrive()     返回(dirvename,pathname)元组

os.path.splitext()      返回(filename,extension)元组

信息

getatime()     返回最近访问时间

getctime()     返回文件创建时间

getmtime()     返回最近文件修改时间

getsize()      返回文件大小(以字节为单位)

查询

exists()     指定路径(文件或目录)是否存在

isabs()     指定路径是否为绝对路径

isdir()     指定路径是否存在且为一个目录

isfile()     指定路径是否存在且为一个文件

islink()     指定路径是否存在且为一个符号链接

ismount()     指定路径是否存在且为一个挂载点

samefile()     两个路径名是否指向同一个文件

本篇将介绍python中sys, getopt模块处理命令行参数

如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?
需要模块:sys
参数个数:len(sys.argv)
脚本名:    sys.argv[0]
参数1:     sys.argv[1]
参数2:     sys.argv[2]

test.py

import sys
print "脚本名:", sys.argv[0]
for i in range(1, len(sys.argv)):
print "参数", i, sys.argv[i]

>>>python test.py hello world

脚本名:test.py
参数 1 hello
参数 2 world

python中使用命令行选项:
例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。
要求该脚本满足以下条件:
1.通过-i -o选项来区别参数是输入文件还是输出文件.
>>> python convert.py -i inputfile -o outputfile
2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息
>>> python convert.py -h

getopt函数原形:
getopt.getopt(args, options[, long_options])

convert.py

import sys, getopt

opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
input_file=""
output_file=""
for op, value in opts:
if op == "-i":
input_file = value
elif op == "-o":
output_file = value
elif op == "-h":
usage()
sys.exit()

代码解释:
a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。
b) "hi:o:": 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个":"号。所以"hi:o:"就表示"h"是一个开关选项;"i:"和"o:"则表示后面应该带一个参数。
c) 调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串''。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)
长选项格式举例:
--version
--file=error.txt
让一个脚本同时支持短选项和长选项
getopt.getopt(sys.argv[1:], "hi:o:", ["version", "file="])

python中命令行参数的更多相关文章

  1. Python 中命令行参数解析工具 docopt 安装和应用

    什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制. ...

  2. python处理命令行参数

    直接从命令行执行py文件的时候如果带有参数,如何获取这些参数,如何解析? http://blog.chinaunix.net/uid-20786165-id-3182268.html sys.argv ...

  3. awk,perl,python的命令行参数处理

    Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性 ...

  4. Python 的命令行参数处理 optparse->argparse

    optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧 ...

  5. Python 获得命令行参数的方法

    如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数1 ...

  6. python解析命令行参数

    常常需要解析命令行参数,经常忘记,好烦,总结下来吧. 1.Python 中也可以所用 sys 的 sys.argv 来获取命令行参数: sys.argv 是命令行参数列表 参数个数:len(sys.a ...

  7. Perl中命令行参数以及打开管道文件

    打开管道文件   Linux提供了管道机制,可以方便应用程序之间的数据传递.在Perl中,扣开和使用管道可采用如下形式的open函数:   open(Filehandle,”丨 CMD”);   其中 ...

  8. python 处理命令行参数--转载

    标题写了那么久,现在现在才有时间,整理下自己的思路.首先先总结下自己对sys模块的理解.手册上对sys的描述是系统参数和系统函数,这里的系统实际上是python解释器.这个模块提供了用户可以访问的解释 ...

  9. Python的命令行参数(argparse)

    参考:https://www.cnblogs.com/lindaxin/p/7975697.html 参考:https://www.cnblogs.com/dengtou/p/8413609.html ...

随机推荐

  1. windows连接远程打印机

    windows连接hp的远程打印机时,自动装不了驱动.. 需打开驱动程序(驱动程序安装需接设备),然后windows就过下载驱动这步了..

  2. php缓存技术基础知识

    普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询 ...

  3. tplink 703刷固件

    1.软件下载: ImageBuilder链接 如果是全新刷机的话,使用:http://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/open ...

  4. IntelliJ IDEA2017 java连接mysql数据库并查询数据

    最近自己开始重新学习java基础了,做java开发不可避免要处理数据库,由于好久不写java了,对idea也有点陌生了.所以这里写篇用jdbc来连接mysql的文章 至于mysql怎么装,请自行百度  ...

  5. Charlse 抓包

    下载Charlse:https://www.charlesproxy.com/ 安装使用: https://www.cnblogs.com/ceshijiagoushi/p/6812493.html ...

  6. const在指针中的用法

    一.指向const对象的指针---对象不能修改 方式1 int value1 = 3; const int *p1 = &value1; *p1 = 5; //错误,不能修改const指向对象 ...

  7. ios APP 在 waiting for review时重新上传程序

    今天上传程序后发现了一个挺大的bug,想重新上传app,于是搜了一下,现记录一下: 点击details进入后在link点击binary details,进入之后点击右上角reject this bin ...

  8. [原创]Nexus5 移植OneStep

    OneStep 简介 https://github.com/SmartisanTech/android One Step 涉及的工程列表: frameworks_base (需要更改WindowMan ...

  9. 获取当前日期和农历的js代码

    来自:http://www.cnblogs.com/Gnepner/archive/2011/09/07/2169822.html 获取当前日期 getToday.js: function GetCu ...

  10. AI篇6====>第一讲

    1.人工智能 小米:小爱 百度:AI云平台 科大讯飞AI平台 2.百度语音合成 # Author: studybrother sun from aip import AipSpeech #从文本到声音 ...