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>
  1. import sys
  2. print sys.argv[0] ##脚本名
  3. print sys.argv[1] ## 第一个参数
  1. print sys.argv  ###参数数组
  1. print len(sys.argv)  ##参数个数

python 检查文件是否存在:

  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退出脚本:

  1. import sys
  2. sys.exit(0) ##正常退出
  3. sys.exit(1)##非正常退出

python检查变量是否在在:

  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()

或:

  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

python 脚本传递参数的更多相关文章

  1. shell调用python脚本,并且向python脚本传递参数

    1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main ...

  2. java调用python脚本并向python脚本传递参数

    1.安装Eclipse 先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成 ...

  3. python脚本传递参数

    给python程序传递参数 运行python脚本时有时需要执行实传递参数 在linux下: [root@Test ~]# cat /opt/python.py #!/usr/local/bin/pyt ...

  4. 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录

    本文主要讲解三个问题:       1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数.       2 使用Streaming编写MapReduce程序(C/C++ ...

  5. (转)如何向map和reduce脚本传递参数

    [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录 分类: hadoop2014-04-28 21:30 1553人阅读 评论(0) 收藏 举报 hadoop 本文主要讲解 ...

  6. 如何向map和reduce脚本传递参数,加载文件和目录

    本文主要讲解三个问题:       1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数.       2 使用Streaming编写MapReduce程序(C/C++ ...

  7. PowerShell脚本传递参数

    在编写PowerShell脚本的时候,可以通过给变量赋值的方法输出想要的结果,但这样的话,需要改动脚本内容.其实也可以在脚本中定义参数,然后再在执行脚本的时候对参数赋值,而无需改动脚本内容. 在Pow ...

  8. linux shell编程指南第二十章------向脚本传递参数

    前面已经讲到如何使用特定变量$ 1 . . $ 9向脚本传递参数.$ #用于统计传递参数的个数.可 以创建一个u s a g e语句,需要时可通知用户怎样以适当的调用参数调用脚本或函数. 简单地说,下 ...

  9. shell变量自增 || Python脚本接收参数

    一.shell变量自增a=1a=$(($a+1))a=$[$a+1]a=`expr $a + 1`let a++ let a+=1 ((a++)) echo $a 二.python脚本接收参数 fro ...

随机推荐

  1. 算法心得1:由$nlogn$复杂度的LIS算法引起的思考

    LIS(Longest Increasing Subsequence)是一类典型的动态规划类问题,简化描述如下: 给定$N(n) = \{1,2...,n\}$的一个排列$P(n)$,求$P(n)$中 ...

  2. Check the difficulty of problems

    Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5830 Acc ...

  3. Uva 1103 古代象形文字

    题目链接:http://vjudge.net/contest/140550#problem/B 紫书P163. 1.根据16进制图转成2进制图. 每个点dfs一下,马上就把最外围的连通分量编号求出来了 ...

  4. Android ActivityThread(主线程或UI线程)简介

    1. ActivityThread功能 它管理应用进程的主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client ...

  5. 2016年12月4日 星期日 --出埃及记 Exodus 20:25

    2016年12月4日 星期日 --出埃及记 Exodus 20:25 If you make an altar of stones for me, do not build it with dress ...

  6. 测可用!ecshop立即购买和加入购物车按钮共存的方法

    网上方法很多,但都不能用的,有的是老版本的,有的方法本身就不完整. 应大多数客户要求,我们重新整理下教程,希望对大家有用. 亲测可用!ecshop立即购买和加入购物车按钮共存的方法 第一步:修改ecs ...

  7. C# 错误代码

    附录B 错误CS0001 编译器内部错误 错误CS0003 内存溢出 错误CS0004 提升为错误的警告 错误CS0005 编译器选项后应跟正确的参数 错误CS0006 找不到动态链接的元数据文件 错 ...

  8. apache commons Java包简介

    更多信息,请参考:http://commons.apache.org/ 一.Commons BeanUtils说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanU ...

  9. 利用jdbc处理oracle大数据---大文件和二进制文件

    一.Oracle中大数据处理 在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种 ...

  10. ICP(迭代最近点)算法

    图像配准是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的图像,例如图像会来自不同的采集设备,取自不同的时间,不同的拍摄视角等等,有时也需要用到针对不同对 ...