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
|
hellowordusername tianname 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
- <span style="font-weight: bold; ">python获取脚本传递参数:</span>
- import sys
- print sys.argv[0] ##脚本名
- print sys.argv[1] ## 第一个参数
- print sys.argv ###参数数组
- print len(sys.argv) ##参数个数
python 检查文件是否存在:
- import os
- as_uniq_info="/home/mtr_dir/auto_mtr/mtr_data/2012-09-26/tw/as_uniq_info"
- if(os.path.isfile(as_uniq_info)):
- print as_uniq_info + "exist!!!"
- else:
- print "File not exist!!!!"
或
os.path.exists(as_uniq_info)
python退出脚本:
- import sys
- sys.exit(0) ##正常退出
- sys.exit(1)##非正常退出
python检查变量是否在在:
- def fn():
- try:
- a=0
- b = open("1.py")
- raise "11" #这个异常不是必然发生,我这里只是假设
- c = open("2.py")
- except:
- d= locals()
- if 'b' in d:
- b.close()
- if 'c' in d:
- c.close()
- if __name__ == "__main__":
- fn()
或:
- 第一种方法:
- 'var' in locals().keys()
- 第二种方法:
- try:
- print var
- except NameError:
- print 'var not defined'
- 第三种方法:
- 'var' in dir()
转自http://blog.csdn.net/ysdaniel/article/details/8026126
python 脚本传递参数的更多相关文章
- shell调用python脚本,并且向python脚本传递参数
1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main ...
- java调用python脚本并向python脚本传递参数
1.安装Eclipse 先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成 ...
- python脚本传递参数
给python程序传递参数 运行python脚本时有时需要执行实传递参数 在linux下: [root@Test ~]# cat /opt/python.py #!/usr/local/bin/pyt ...
- 【hadoop】如何向map和reduce脚本传递参数,加载文件和目录
本文主要讲解三个问题: 1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数. 2 使用Streaming编写MapReduce程序(C/C++ ...
- (转)如何向map和reduce脚本传递参数
[MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录 分类: hadoop2014-04-28 21:30 1553人阅读 评论(0) 收藏 举报 hadoop 本文主要讲解 ...
- 如何向map和reduce脚本传递参数,加载文件和目录
本文主要讲解三个问题: 1 使用Java编写MapReduce程序时,如何向map.reduce函数传递参数. 2 使用Streaming编写MapReduce程序(C/C++ ...
- PowerShell脚本传递参数
在编写PowerShell脚本的时候,可以通过给变量赋值的方法输出想要的结果,但这样的话,需要改动脚本内容.其实也可以在脚本中定义参数,然后再在执行脚本的时候对参数赋值,而无需改动脚本内容. 在Pow ...
- linux shell编程指南第二十章------向脚本传递参数
前面已经讲到如何使用特定变量$ 1 . . $ 9向脚本传递参数.$ #用于统计传递参数的个数.可 以创建一个u s a g e语句,需要时可通知用户怎样以适当的调用参数调用脚本或函数. 简单地说,下 ...
- shell变量自增 || Python脚本接收参数
一.shell变量自增a=1a=$(($a+1))a=$[$a+1]a=`expr $a + 1`let a++ let a+=1 ((a++)) echo $a 二.python脚本接收参数 fro ...
随机推荐
- Unity中HDR外发光的使用
1.使用标准材质,设置好Emission外发光 2.Camera下打开HDR,加上Bloom特效 最终效果 如果只勾选HDR,只会有高光感,不会有外发光 注意,正向光照下打开HDR不可用抗锯齿,否则切 ...
- CodeBlocks养眼的colour theme
把如下的代码复制粘贴到这个文件:default.conf <?xml version="1.0" encoding="UTF-8" standalone= ...
- Poj(3687),拓扑排序,
题目链接:http://poj.org/problem?id=3687 题意:n个重量为1~n的球,给定一些编号间的重量比较关系,现在给每个球编号,在符合条件的前提下使得编号小的球重量小.(先保证1号 ...
- Selenium Grid 简易安装
转载自:http://blog.csdn.net/xifeijian/article/details/17057659
- zend studio 12.0 怎么汉化?
网上搜索到的答案在:http://zhidao.baidu.com/link?url=OUGXDr0H28ad0UYSCUQ27BziJnymTcfWCmNAmzSRorOe3ZDSRhRXY0QoE ...
- reactor模式学习
一.介绍reactor模式 二.使用reactor模式 三.参考 http://blog.csdn.net/swordmanwk/article/details/6170995 该文章,简单介绍了r ...
- JqueryEasyUI 解决IE下datagrid无法刷新的问题
问题描述: 在使用JqueryEasyUI 时,发现在IE下$('#table').datagrid('reload');无效,数据并没有被刷新,究其原因,是因为刷新时,datagrid请求的url没 ...
- php 修改、增加xml结点属性的实现代码
php修改xml结点属性,增加xml结点属性的代码,有需要的朋友可以参考下 php 修改 增加xml结点属性的代码,供大家学习参考.php修改xml结点属性,增加xml结点属性的代码,有需要的朋友,参 ...
- 改变了一下blog的主题,很开心
调整了一下博客的样式,之前一直想改变下,一直不会这次终于摸索出来一点,不过是最简单的,就是在管理里面的设置,可以定制css代码,修改修改,页面就跟着你的想法走了,有时间好好修改下,暂时这个样子,简单大 ...
- ord函数-php
摘录自http://php.net/manual/zh/function.ord.php (PHP 4, PHP 5, PHP 7) ord — 返回字符的 ASCII 码值 说明 int ord ( ...