月度归档:2020年07月

向python脚本传递参数

import sys

print sys.argv[0]

sys.argv[0]是python脚本的名字;

下面的例子是一个用来提取文本log.txt中含有匹配字符串的文本行,匹配字符串的字符串当作参数传递给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()

Python文件内部接收参数用:

sys.argv

sys.argv[0]:是python脚本名

sys.arg[1]及以后各项:是接收的参数

#! /bin/python  

import sys  

for arg in sys.argv:  

    print arg  

需要模块:sys

参数个数:len(sys.argv)

脚本名:    sys.argv[0]

参数1:     sys.argv[1]

参数2:     sys.argv[2]

test.py

import sys

print “脚本名:”, sys.argv[0]

for i in range(1, len(sys.argv)):

    print “参数”, i, sys.argv[i]

>>>python test.py hello world

脚本名:test.py

参数 1 hello

参数 2 world

python中使用命令行选项:

例如我们需要一个convert.py脚本。它的作用是处理一个文件,并将处理后的结果输出到另一个文件中。

要求该脚本满足以下条件:

1.通过-i -o选项来区别参数是输入文件还是输出文件.

>>> python convert.py -i inputfile -o outputfile

2.当不知道convert.py需要哪些参数时,用-h打印出帮助信息

>>> python convert.py -h

getopt函数原形:

getopt.getopt(args, options[, long_options])

import sys, getopt

opts, args = getopt.getopt(sys.argv[1:], “hi:o:”)

input_file=””

output_file=””

for op, value in opts:

    if op == “-i”:

        input_file = value

    elif op == “-o”:

        output_file = value

    elif op == “-h”:

        usage()

        sys.exit()

代码解释:

a) sys.argv[1:]为要处理的参数列表,sys.argv[0]为脚本名,所以用sys.argv[1:]过滤掉脚本名。

b) “hi:o:”: 当一个选项只是表示开关状态时,即后面不带附加参数时,在分析串中写入选项字符。

当选项后面是带一个附加参数时,在分析串中写入选项字符同时后面加一个”:”号

所以”hi:o:”就表示“h”是一个开关选项

“i:”和”o:”则表示后面应该带一个参数

c) 调用getopt函数。函数返回两个列表:opts和args。

opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。

opts是一个两元组的列表。每个元素为:(选项串,附加参数)。如果没有附加参数则为空串”。

getopt函数的第三个参数[, long_options]为可选的长选项参数,上面例子中的都为短选项(如-i -o)

长选项格式举例:

–version

–file=error.txt

让一个脚本同时支持短选项和长选项

getopt.getopt(sys.argv[1:], “hi:o:”, [“version”, “file=”])

URL reg规则

1:5种URL规则的定义及使用场景

当您设置页面,页面组和转化时,Ptengine支持5种URL规则:包含、头匹配,尾匹配,完全匹配,正则表达式。

包含:任何包含您特定字符串的的URL。例如,如果您指定“abc.com”使用“包含”规则:那么“abc.com.contact”等类似的URL将使用此规则。

匹配:从字符串开头的第一个字符一直匹配到您特定的最后一个字符,也许还有其他剩余的字符,但是遵循相同的规则。

例如,特定访问者访问的网址可能是 http://www.example.com/checkout.cgi?page=1&id=9982251615, 在这一情况下,其他每位用户的 id 都会不同。您只要使用 http://www.example.com/checkout.cgi?page=1 作为目标网址,并选择”头匹配”作为匹配类型,仍可以匹配此页。

尾匹配从字符串结尾的最后一个字符一直匹配到您指定的第一个字符,也许还有其他剩余的字符,但是遵循相同的规则。

例如,特定访问者访问的网址可能是“http://www.example.com/checkout.cgi?page=1&id=9982251615,在这一情况下,您希望使用“&ID = 9982251615”为目标字符,请选择”尾匹配”作为匹配类型。

完全匹配:从头到尾完全匹配网址中的每一个字符。

正则表达式正则表达式会将特殊字符视为通配符,这是一种非常灵活的匹配方式。如果网站上同一网页网址的主体或后续参数会发生变化,或者两者都会发生变化,这个方式就相当实用。

2:正则表达式的语法

其实, 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种匹配逻辑。

正则表达式字符主要包含:通配符、定位符、分组、其它。

通配符,可以用来代替一个或多个真正字符,以便根据您指定的参数变化的所有实例创建一个匹配。 下面是一些经常使用通配符说明。

定位符 创建基于固定点的匹配,通常在开始或结束的位置。分组

注:正则表达式越简单越好,以便于您和同事接下来的方便使用。

3:正则表达式的常见用法

正则表达式的常见用法

1.前方域名完全匹配 ,尾部带/或带?加参数
正则:^https:\/\/www.ptmind.com($|\/$|\/\?.*)
能匹配以下页面:
https://www.ptmind.com
https://www.ptmind.com/
https://www.ptmind.com/?WT.mc_id=xxxx
不能匹配以下页面:
https://www.ptmind.com/abc

2.头部匹配http或者https协议,并且匹配多个子域名
正则:^(http|https):\/\/(sh|bj|tj).ptmind.com
匹配以下页面:
http://sh.ptmind.com
http://bj.ptmind.com/abc
http://tj.ptmind.com
https://sh.ptmind.com
https://bj.ptmind.com/?WT.mc_id=xxxx
https://tj.ptmind.com
不能匹配以下页面:
https://www.ptmind.com

3.指定头部匹配规则
正则:^http:\/\/ptmind\.com\/price.*$
匹配以下页面:
http://ptmind.com/price/page
http://ptmind.com/price?sid=23fwe3r2&vid=345666
http://ptmind.com/price#top
http://ptmind.com/price

4.匹配 http 或 https开头链接,也可匹配不包含www或将www替换成其它由字母数字组合的子域名的情况
正则:^(http|https):\/\/[a-z0-9]*[.]*ptmind.com\/service\/mng_units\/lp03$
匹配以下页面:
http://www.ptmind.com/service/mng_units/lp03
https://www.ptmind.com/service/mng_units/lp03
http://ptmind.com/service/mng_units/lp03
http://a123.ptmind.com/service/mng_units/lp03
https://ptmind.com/service/mng_units/lp03

5.匹配末尾数据必须在(6984604到6984783之间)
正则:^http:\/\/ptmind.com\/detail\/id=6984([6][1-9][0-9]|[6][0][4-9]|[7][0-7][0-9]|[7][8][0-3])$
匹配以下页面:
http://ptmind.com/detail/id=6984604
http://ptmind.com/detail/id=6984783
不能匹配以下页面:
http://ptmind.com/detail/id=6984784
http://ptmind.com/detail/id=6984603
若您依然需要帮助,可以联系我们的在线客服寻求帮助。

4:正则表达式的校验工具

https://www.regexpal.com/