sys.arg[0] sys.arg[1] sys.arg[2]
这些参数是什么意思
这些参数是我们输入的参数
当运行文件的时候 sys.arg是一个参数数组 里面的参数是我们自定义的
我们可以传入文件 或者文本参数,情景如下:
新建一个python文件 test.py
import os
import sys
test = sys.argv
print(test)
print len(test)
shell 运行python test.py
[master@master tfidf_test]$ python test.py
['test.py']
1
由此可见 默认情况 argv数组只包含一个默认参数 就是文件名
数组长度是1
此时argv直有一个参数,如果调用argv[1]必定报错。
如下:
import os
import sys
test = sys.argv
print(test)
print len(test)
print(sys.argv[1])
aster@master tfidf_test]$ python test.py
['test.py']
1
Traceback (most recent call last):
File "test.py", line 9, in <module>
print(sys.argv[1])
IndexError: list index out of range
报错IndexError: list index out of range ,所以参数除了第一个文件名参数默认传入之后,别的参数都是需要你传入的,我们不用修改python文件,直接带参运行下边的文件就不错报错了:
[master@master tfidf_test]$ python test.py helloworld
['test.py', 'helloworld']
2
helloworld
一般情况下,我们传参是为了传入文件名等,下边我们举一个合并文件例子。我们把某个文件下的txt文件合并为一个:vim merge.py
1 import os
2 import sys
3
4 file_path_dir = sys.argv[1]
5
6 def read_file_handler(f):
7 fd = open(f, 'r')
8 return fd
9
10 file_name = 0
11 for fd in os.listdir(file_path_dir):
12 file_path = file_path_dir + '/' + fd
13
14 content_list = []
15
16 file_fd = read_file_handler(file_path)
17 for line in file_fd:
18 content_list.append(line.strip())
19
20 print '\t'.join([str(file_name), ' '.join(content_list)])
21
22 file_name += 1
第四行中的argv[1]就是一个需要你传入的参数,代表的是你要合并文件的文件夹:我们新建一个文件夹叫做p1,p1下面新建两个文件1.txt 2.txt
[master@master p1]$ cat 1.txt
woshi wenjian 1
[master@master p1]$ cat 2.txt
woshiwenjian 2222 a
[master@master p1]$
然后我们就可以带参数运行命令,合并p1里面的文件 ----->合并到文件 3.txt
[master@master tfidf_test]$ ls
merge.py test.py p1
master@master tfidf_test]$ >python merge.py p1 ->3.txt
[master@master tfidf_test]$ ls
3.txt merge.py test.py p1
[master@master tfidf_test]$ cat 3.txt
0 woshi wenjian 1
1 woshiwenjian 2222 a
2
[master@master tfidf_test]$
应该明白了吧