>>>for i in range(len(a[0])): 第一种方法
... a[0][i],a[1][i],a[2][i] 此为tuple形式
(1, 2,1)
(2, 4,2)
(3, 5,3)
>>>for i in range(len(a[0])):
... print([a[0][i],a[1][i],a[2][i]]) 注意括号决定了输出 的形式
[1, 2,1]
[2, 4,2]
[3, 5,3]
>>>eval("a[0]")
[1, 2,3]
>>>eval("a[0][0]")
1
>>>eval("a[0][0],a[1][0],a[2][0]")
(1, 2,1)
a =[[1,2,3],[2,4,5],[1,2,3]] 第二种方法
>>>s = "" 定义一个 为s的字符串
>>>l = [] 定义一个为l 的列表
>>>for i in range(len(a[0])):i大循环是a[][]第二个括号里的值
... for j in range(len(a)):j是a[][]第一个括号里的值
... s += "a[%s][%s]," % (j,i) 输出的格式把前面的加上
... l.append(s) 三个为一组添加到 l 列表里
... s = "" s字符串重新置空,开始第二次循环
...
>>>l
第一次循环结果 置空后第二次循环结果
['a[0][0],a[1][0],a[2][0],','a[0][1],a[1][1],a[2][1],','a[0][2],a[1][2],a[2][2],']
置空后第三次循环结果
>>>[eval(i) for i in l] 循环l里的三个元素 并输出结果
[(1,2, 1), (2, 4, 2), (3, 5, 3)]
I
在一些测试平台对接时或者用例执行时,或多或少会用到Python脚本传参的问题。
test.py脚本
#!/usr/bin/python3
import sys
print ('参数个数为:', len(sys.argv), '个参数。')
print ('参数列表:', str(sys.argv))
print ('脚本名:', str(sys.argv[0]))
print ('第一个参数:', sys.argv[1])
执行python3 test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
脚本名: test.py
第一个参数: arg1
test.py脚本
#!/usr/bin/python3
import argparse
# 生成了一个命令行参数的对象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--name', '-n', help='name属性,非必要参数')
parser.add_argument('--year', '-y', help='year 属性,非必要参数,但有默认值', default=2017)
parser.add_argument('--body', '-b', help='body属性,必要参数', required=True)
args = parser.parse_args()
print (args.year, args.name, args.body)
查看帮助python3 test.py --help
usage: test.py [-h] [--name NAME] [--year YEAR] --body BODY
Test for argparse
optional arguments:
-h, --help show this help message and exit
--name或-n NAME name属性,非必要参数
--year或-y YEAR year属性,非必要参数,但有默认值
--body或-b BODY body 属性,必要参数
执行python3 test.py --year 2021 -n robot --body "are you ok?"
2021 robot are you ok?
以方法2中的test.py脚本为例
python3 test.py --year 2021 --body [\"test\", \"robot\",\"boy\" ]
2021 ["test", "robot", "boy" ]
以方法1中的test.py脚本为例
python3 test.py [\"test\", \"robot\",\"boy\" ]
参数个数为: 2个参数。
参数列表: ['test.py', '[\"test\", \"robot\", \"boy\" ]']
脚本名: test.py
第一个参数: ["test", "robot", "boy" ]
其实此时传入的第一个参数是一个字符,需要转换为列表。
import json
json.loads(sys.argv[1])
test_arg.py脚本
#!/usr/bin/python3
import argparse
import os
# 生成了一个命令行参数的对象
parser = argparse.ArgumentParser(description='Test for argparse')
parser.add_argument('--body', '-b', help='body属性,必要参数', required=True)
args = parser.parse_args()
print (args.body)
command=python3 + ' ' + test_sys.py+ ' ' + args.body
print (command)
str=('command')
result=os.system(str)
test_sys.py脚本
#!/usr/bin/python3
import sys
import json
print ('第一个参数:', sys.argv[1])
print ('列表:', json.loads(sys.argv[1]))
执行python3 test_arg.py --body [\"test\", \"robot\",\"boy\" ]
python3 test_sys.py ["test", "robot", "boy" ]
test_sys.py执行报错,转json失败。
还记得我们案例2中,脚本的传入指定参数和实际传入参数嘛?
test_arg.py脚本我们稍微优化下,在传参前先字符替换下。
["test", "robot", "boy" ]转换为[\"test\", \"robot\",\"boy\" ]即可。
command.replace(' " ' , r ' \" ') 添加到command=之后,再次运行看看呢?
python 读取文本文件内容转化为python的list列表,案例如下:
1、目的
读取cal.txt内容,然后通过python脚本转化为list内容
2、文件内容
cal.txt
1213
14
15
16
3、Python编写cal.py脚本内容
#!/usr/bin/python#coding = UFT-8
result=[]
fd = file( "cal.txt", "r" )
for line in fd.readlines():
result.append(list(map(int,line.split(','))))
print(result)
for item in result:
for it in item:
print it
4、执行转换为List列表结果内容:
[[12], [13], [14], [15], [16]]12
13
14
15
16