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. EJB包含哪3种bean

    EJB包含哪3种bean 解答:session bean(会话bean), entity bean(实体bean), message bean(消息bean)

  2. 将Centos的yum源更换为国内的阿里云(163)源

    阿里云是最近新出的一个镜像源.得益于阿里云的高速发展,这么大的需求,肯定会推出自己的镜像源.阿里云Linux安装镜像源地址:http://mirrors.aliyun.com/ CentOS系统更换软 ...

  3. Material design之New Widgets(RecyclerView CardView)

    New Widgets:提供了两个新的控件 RecyclerView CardView 这两个控件包含在了Android L的support library中, 他们可以用于显示复杂的布局而且都默认采 ...

  4. [cocos2dx] cocosdx编译工程那些事

    cocos compile -p android 上面这条命令可以将cocos2dx的工程编译出android apk,需要注意的是如果有新增的cpp文件,都需要在“CocosProject\proj ...

  5. Oracle存储——逻辑结构

    Oracle 数存储——物理结构 Oracle存储结构:物理结构+逻辑结构 Oracle 数据库存储逻辑结构 Oracle Schema Objects(Schema Object Storage A ...

  6. https://github.com/arut/nginx-rtmp-module.git

    https://github.com/arut/nginx-rtmp-module.git NGINX-based Media Streaming Server nginx-rtmp-module P ...

  7. Eclipse 介绍

    设置背景的插件: Darkest Dark Theme 添加 properties 插件: Properties Editor Git 插件: Egit 常用快捷键 command + 1 : 代码提 ...

  8. Qt 如何自动安装常用依赖?

    使用 *.prf 文件自动安装依赖 在 Qt\Qt5.9.5\5.9.5\msvc2015\mkspecs\features 路径中添加 auto_install.prf 文件 然后在程序配置文件(* ...

  9. 我的Android进阶之旅------>Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项

    今天接到一个波兰的客户说有个APP在英文状态下一切运行正常,但是当系统语言切换到波兰语言的时候,程序奔溃了.所以首先我得把系统的语言切换到波兰语,问题是哪个是波兰语呢? 我还真的不认识哪个列表项代表着 ...

  10. 静默安装oracle 11g及参数配置优化详解

    一.安装前准备工作1.修改主机名#vi /etc/hosts   //并添加内网IP地址对应的hostname,如下127.0.0.1           localhost::1           ...