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

 可以像shell脚本一样,同过标准输入给程序输入内容

python read_stdin.py  </etc/passwd

python read_stdin.py -

cat /etc/passwd |python read_stdin.py

将标准输入保存在一个列表中

import sys
def get_content():
     return sys.stdin.readlines()
print(get_content())

python readlines_stdin.py <test/1.txt
[‘hello\n‘, ‘world\n‘]

3. 利用fileinput读取标准输入

#/usr/bin/env python
#coding=utf-8
import fileinput
for line in fileinput.input():
     print(line,end="")

  python file_input1.py /etc/passwd

python file_input1.py  </etc/passwd

python file_input1.py /etc/passwd /etc/my.cnf

fileinput常用的方法:

#!/usr/bin/python
from __future__ import print_function
import fileinput

for line in fileinput.input():
    meta = [fileinput.filename(), fileinput.fileno(), fileinput.filelineno(),
            fileinput.isfirstline(), fileinput.isstdin()]
    print(*meta, end="")    print()
    print(line, end="") 

4. 使用getpass读取密码:

import getpass

user=getpass.getuser()
passwd=getpass.getpass(‘you password: ‘)
print(user,passwd)

可以避免输入密码被看见

5.使用argparse解析命令行参数

agrparse能够根据从sys.arg中解析参数,并自动生成帮助信息

from __future__ import print_function
import argparse

def _argparse():
        parser = argparse.ArgumentParser(description="This is description")
        parser.add_argument(‘--host‘, action=‘store‘,
                                dest=‘server‘,default="localhost", help=‘connect to host‘)
        parser.add_argument(‘-t‘, action=‘store_true‘,
                                    default=False, dest=‘boolean_switch‘, help=‘Set a switch to true‘)
        return parser.parse_args()

def main():
       parser = _argparse()
       print(parser)
       print(‘host =‘, parser.server)
       print(‘boolean_switch=‘, parser.boolean_switch)

if __name__ == ‘__main__‘:
    main()

  格式:rgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name:参数的名字

    action: 遇到参数时的动作

nargs:参数的个数

dest:解析后的参数的名字

type:参数的类型

6. 使用Click创建命令行解析

Click比较argparse更加的快速和简单

pip inst click

import click

@click.command()
@click.option(‘--count‘, default=1, help=‘Number of greetings.‘)
@click.option(‘--name‘, prompt=‘Your name‘,
              help=‘The person to greet.‘)
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo(‘Hello %s!‘ % name)

if __name__ == ‘__main__‘:
    hello()

 commond让函数成为命令行接口

option:增加命令行选项

echo:输出结果

prompt:如果没有指定name这个参数时,会进入交互模式下输入

 

也可以像Linux中的fc一样进入默认编辑器

import click
message = click.edit()
print(message,end="")

  

原文地址:https://www.cnblogs.com/zydev/p/8645286.html

时间: 2024-11-09 19:36:01

Python处理命令行参数的相关文章

Python 的命令行参数处理 optparse-&gt;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中命令行参数

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"

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

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

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的命令行参数处理

import argparse # A position argument func_choice = {'client' : 'client function', "server" : "server function"} # parser parser = argparse.ArgumentParser(description = "Select your favorite function") # add argument parser.a

python 命令行参数学习(一)

用了这么久,还没怎么学习python的命令行参数,是在惭愧. 参考文章地址:http://www.cnblogs.com/jianboqi/archive/2013/01/10/2854726.html 自己的代码实例: #-*-coding:utf-8-*- __author__ = 'Deen' ''' import argparse parser = argparse.ArgumentParser() parser.parse_args() ''' ''' import argparse

python 命令行参数sys.argv

python中命令行参数和shell不一样,是通过sys.argv[]来获取的,sys.argv[0]是代码文件本身的路径,因此参数是从1开始的, 例子: #!/usr/bin/env python import os import json import os, sys #t=os.popen("""netstat -natp|awk -F: '/redis-server/&&/LISTEN/{print $2}'|awk '{print $1}' &quo