使用argparse模块:
的argparse模块可以很容易地写用户友好的命令行接口 。该程序定义了它需要的参数,并且argparse将找出如何解析sys.argv中的那些参数。参数 argparse模块也会自动生成帮助和使用消息 ,并在用户给出程序无效参数时发出错误。
它功能非常强大:您可以指定帮助信息,进行验证,提供默认设置......无论您怎样想象使用命令行参数。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--position", type=int)
parser.add_argument("-s", "--sample", type=int)
args = parser.parse_args()
col = args.position
sample = args.sample
print col
print sample
下面是在命令行:
$ python test.py --help
usage: test.py [-h] [-p POSITION] [-s SAMPLE]
optional arguments:
-h, --help show this help message and exit
-p POSITION, --position POSITION
-s SAMPLE, --sample SAMPLE
$ python test.py -p 10 -s 100
10
100
$ python test.py --position 10 --sample 100
10
100
谈到您所提供的代码:
- 未使用
import random
声明
- 移动
from random import shuffle
到剧本顶部
- 不需要调用
f.close()
(尤其是;
) - with
手柄关闭文件自动地
下面的代码会是什么样子的修正后:
#!/usr/bin/python
import argparse
import csv
from random import shuffle
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--position", type=int)
parser.add_argument("-s", "--sample", type=int)
args = parser.parse_args()
with open('<filename>', 'r') as f:
reader = csv.reader(f)
data = [row[args.position] for row in reader]
shuffle(data)
print '\n'.join(data[:args.sample])
尝试https://docs.python.org/2/library/argparse.html#module-argparse,或http://www.pythonforbeginners.com/system/蟒蛇-SYS-argv的。 – wflynny
我不是你的downvoter,而是尝试'import sys; print sys。argv' –
Downvoted:“我无法找到一个体面的教程来解释这个问题” - 对不起,但这不是懒惰或严重缺乏谷歌技能。您可以简单地[将您的问题的标题复制到Google](https://www.google.com/search?q=Python%3A+pass+arguments+to+a+script&ie=utf-8&oe=utf-8)并获得大量有用的教程;事实上,10个第一个结果中的任何一个都能回答你的问题。 – l4mpi