使用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