举例解析 python arg[0] sys.arg[1]等参数意义 附带python合并文件代码

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]$

应该明白了吧

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值