zoukankan      html  css  js  c++  java
  • python 脚本传递参数

     

    python查找指定字符

    #!/usr/bin/env python
     
    import sys 
    import re
     
    f = open("log.txt", "rb")
    info = open("info.txt", "ab")
    for line in f.readlines():
        if re.search(sys.argv[1], line):
            info.write(line)
    info.close()
    f.close()
     

    当形参如*arg时表示传入数组,当形参如**args时表示传入键值对。

    1
    2
    3
    4
    5
    6
    def myprint(*commends,**map): 
     for comm in commends: 
     print comm 
     for key in map.keys(): 
     print key,map[key] 
    myprint("hello","word",username="tian",name="wei")

    输出:

    1
    2
    3
    4
    hello
    word
    username tian
    name wei

    python中定义一个函数,可以通过正常的只传入值或key-value的方法调用。但是如果第一个时参数传入的是key-value的方法,那么后面的必须都是key-value方法,如果第一个不是,那么后面的可以根据情况再传入值就可以了。

    例子如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def parrot(voltage="fff",state='a stiff',action='voom',type='Norwegian Blue'):
     print "-- This parrot wouldn't", action, 
     print "if you put", voltage, "volts through it."
     print "-- Lovely plumage, the", type 
     print "-- It's", state, "!"
    parrot(1000)#可以 
    parrot(action = 'VOOOOOM', voltage = 1000000)
    #可以,都是key-value方法 
    parrot('a thousand', state = 'pushing up the daisies')
    #可以,第一个实参为直接传入法,后面无所谓了 
    parrot('a million', 'bereft of life', 'jump')
    #可以,都是传值,而且由于形参都有默认值,则按顺序一个个替换 
    parrot(voltage="33","ff","abc")
    # 不可以,第一个为Key-value传值法,以后的都必须是

    Python新手入门,在python中函式定义主要有四种方式:

    ① F(arg1,arg2,...),最常见的定义方式,一个函式可以定义任何个参数,每个参数间用逗号分割,用这种参数在调用的时候必须在函式名后面的小括号中提供个数相等的值(实参),并且顺序必须相同,形参与实参一一对应

    1
    2
    def a(x,y):
      print x,y

    调用a函式,a(1,2)则x=1,y=2,如果a(1)或者a(1,2,3)则会出错

    ② F(arg1,arg2=value2,...agrN=valueN),则将为函式提供默认值。

    1
    2
    def a(x,y=3):
      print x,y

    调用该函式,a(1,2)则x=1,y=2,如果a(1)不会导致错误,此时x=1,y=3,y值将使用默认值,a(y=4,x=2)同理

    可变参数:

    ③ F(*arg1),以一个*加形参的方式来表示函式的实参个数不确定,参数个数>=0,采用这样的方式定义函式,在函式内部将以实参名的方式构建一个元组(tuple)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def a(*x): 
      # 定义一个名为x的元组
     
    def a(*t): 
      print x
     
    >>>a(1)
    (1,)
    >>>a()
    None
    >>>a(1,2,3)
    (1,2,3)

    遍历该元组(计算总和)的一种方式,此时r定义为一元组:

    1
    2
    3
    4
    5
    def y(*r):
      x = 0
      for t in r:
        x += t
      print x

    ④ F(**arg)形参名前加2个**表示在函式内部将被存放在以形参名为标识符的dictionary,这时调用将使用arg1=value1,arg2=value2...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def a(**b): 
      print b
     
    >>>a()
    None
    >>>a(x=1,y=2)
    {'y':2,'x':1}
    #注意遍历返回的顺序与形参位置顺序相反
    >>>a(1,2) #error

    可通过以下方式来获取预期键值对,如果形参是未定义'y'的键,将返回None

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def a(**x): 
      print x.get('y')
     
    >>>a(x=1,y=2)
    2
    >>>a(x=1)
    None
    >>>a(x=1,b=2)
    None

    Python参数调用过程按照以上四种方法优先级依次降低。

    ①方式解析,然后是②中的arg=value方式,再分别按照③>④优先级传参

    以上函式命名不符合规范,仅用于简单标识说明,使用python 2.6.2

    1. <span style="font-weight: bold; ">python获取脚本传递参数:</span>  
    [python] view plain copy
     
    1. import sys  
    2.   
    3. print sys.argv[0] ##脚本名  
    4. print sys.argv[1] ## 第一个参数  
    [python] view plain copy
     
    1. print sys.argv  ###参数数组  
    [python] view plain copy
     
    1. print len(sys.argv)  ##参数个数  


    python 检查文件是否存在:

    [python] view plain copy
     
    1. import os  
    2. as_uniq_info="/home/mtr_dir/auto_mtr/mtr_data/2012-09-26/tw/as_uniq_info"  
    3. if(os.path.isfile(as_uniq_info)):  
    4.         print as_uniq_info + "exist!!!"  
    5. else:  
    6.         print "File not exist!!!!"  

    os.path.exists(as_uniq_info)

    python退出脚本:

    [python] view plain copy
     
    1. import sys  
    2. sys.exit(0) ##正常退出  
    3. sys.exit(1)##非正常退出  


    python检查变量是否在在:

    [python] view plain copy
     
    1. def fn():  
    2.     try:  
    3.         a=0  
    4.         b = open("1.py")  
    5.         raise "11"  #这个异常不是必然发生,我这里只是假设  
    6.         c = open("2.py")  
    7.     except:  
    8.         d= locals()  
    9.         if 'b' in d:  
    10.             b.close()  
    11.         if 'c' in d:  
    12.             c.close()  
    13. if __name__ == "__main__":  
    14.     fn()  

    或:

    [python] view plain copy
     
    1. 第一种方法:  
    2. 'var'   in   locals().keys()  
    3. 第二种方法:  
    4. try:   
    5.     print   var  
    6. except   NameError:   
    7.     print   'var   not   defined'  
    8. 第三种方法:  
    9. 'var'   in   dir()  

    转自http://blog.csdn.net/ysdaniel/article/details/8026126

  • 相关阅读:
    RedHat Linux AS 5下memcached的安装
    System.Diagnostics.Debug和System.Diagnostics.Trace
    设置c#windows服务描述及允许服务与桌面交互的几种方法
    在WinForm中使用WebServices来实现软件自动升级(AutoUpdate)(C#)
    从客户端中检测到有潜在危险的 Request.Form 值
    discuz数据库迁移,改密码后,相关配置文件修改
    C#取得页面执行时间的代码
    RedHat 解决 ifconfig命令不能使用的问题
    System.ServiceProcess 命名空间下10个类的列表
    Excel导入,导出,模板生成公共模块整理
  • 原文地址:https://www.cnblogs.com/perfei/p/5353855.html
Copyright © 2011-2022 走看看