码迷,mamicode.com
首页 > 编程语言 > 详细

Python处理命令行参数

时间:2018-03-25 18:11:28      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:false   count   image   png   shell脚本   option   return   __name__   filename   

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

  

Python处理命令行参数

标签:false   count   image   png   shell脚本   option   return   __name__   filename   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!