python中命令行参数

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="])

原文地址:https://www.cnblogs.com/klb561/p/9231839.html

时间: 2024-10-14 07:20:46

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

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

什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制.这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入 -h 的时候显示信息 .例如 python -h ,会显示所有的 python 指令,并且页通过 docopt 限制了 python 指令的格式),下面是一些简单的例子: docopt 的安装 d

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

optaprse自2.7版开始弃用:弃用optparse模块,不会进一步开发,将继续开发argparse模块作为替代. 但是用习惯了optparse,还是很好用的撒. optparse使用起来,相比旧的getopt模块,更方便.灵活而且解析命令行选项的库功能强大. optparse使用声明样式的命令行解析:你创建一个OptionParser实例,填充选项,并解析命令行. optparse允许用户使用在传统GNU / POSIX语法的选项,而且会生成的使用和帮助信息(就是你没有显式的定义-h/--

Python 获得命令行参数的方法

本篇将介绍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 1 import sys 2 print "脚本名:", sys.argv[0] 3 for i in range(1, len(sys.argv)):

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

Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性化到家了,但是命令行上就很原始,但是很有分类感.还是会喜欢Perl一点(至少还可以动脑子,不至于生锈),感觉Perl是个杂合子,而python像胡彦斌,bash像韩红(最近看我是歌手第三季,嘻嘻).Bash就是家常菜了,虽然Perl可以大部分代替Bash的功能,像grep sort map等,但是某

Python处理命令行参数

1. 将命令行参数保存在列表中,注意argv[0]是程序本身的名字: import sys print(sys.argv) print(sys.argv[1]) python argv.py localhost 3306['argv.py', 'localhost', '3306']localhost 2. 使用sys.stdin和fileinput读取标准输入,并打印在终端类似shell中的管道 import sys for line in sys.stdin: print(line,end=

c语言中命令行参数argc,argv[ ]

main(int argc,char *argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] main()括号内是固定的写法. 下面给出一个例子来理解这两个参数的用法: 假设程序的名称为prog, 当只输入prog,则由操作系统传来的参数为: argc=1,表示只有一程序名称. argc只有一个元素,argv[0]指向输入的程序路径及名称:./prog 当输入prog para_1,有一个参数,则由操

python添加命令行参数和异常处理

异常处理+命令行解析库argparse Socket.error 与一般I/O和通信问题有关的 Socket.gaierror 与查询地址有关的 Socket.herror 与其他地址错误有关 Socket.timeout 与一个socket上调用settimeout()后,超时处理有关 #-*- coding:utf-8 -*- import sys import socket import argparse #通过命令行输入参数 python 1_7_socket_errors.py --h

python中命令行模式和交互模式

命令行模式和Python交互模式 1.看到类似C:\>是在Windows提供的命令行模式: 在命令行模式下,可以执行python进入Python交互式环境,也可以执行python hello.py运行一个.py文件. 2.看到>>>是在Python交互式环境下: 在Python交互式环境下,只能输入Python代码并立刻执行. 在命令行模式运行.py文件和在Python交互式环境下直接运行Python代码有所不同.Python交互式环境会把每一行Python代码的结果自动打印出来,

c语言中命令行参数argc,argv[]详解

main(int argc,char *argv[ ]) 1.argc为整数 2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][]   ,argv是一个指针数组) 注:main()括号内是固定的写法. 3.下面给出一个例子来理解这两个参数的用法: 假设程序的名称为prog,    当只输入prog,则由操作系统传来的参数为:    argc=1,表示只有一程序名称.    argc只有一个元素,argv[0]指向输入的程