Python 腳本接收命令行參數的多種方式 All In One
-
sys
-
argparse
-
shell script
-
tensorflow
-
getopt
...
sys
#!/usr/bin/env python3
# coding: utf8
import sys
args = sys.argv
print("args length:", len(args))
print("args type:", type(args))
print("function name:", args[0])
print("first arg =", args[1])
print("second arg =", sys.argv[2])
https://docs.python.org/3/library/sys.html
sys
--- 系統相關的參數和函數¶
https://docs.python.org/zh-cn/3/library/sys.html
argparse
import argparse
parser = argparse.ArgumentParser(description='argparse testing')
parser.add_argument('--name','-n',type=str, default = "bk",required=True,help="a programmer's name")
parser.add_argument('--age','-a',type=int, default=35,help='age of the programmer')
parser.add_argument('--sex','-s',type=str, default='male')
parser.add_argument('--favorite','-f',type=str, nargs="+",required=False,help="favorite of the programmer")
args = parser.parse_args()
print(args.name)
print(args.age)
print(args.sex)
print(args.favorite)
https://docs.python.org/3/library/argparse.html
argparse
--- 命令行選項、參數和子命令解析器
https://docs.python.org/zh-cn/3/library/argparse.html
shell script
# 定義參數
$ ./args.sh arg1 arg2
#!/usr/bin/env bash
# 接收參數
arg1=$1
arg2=$2
# 使用參數
python3 ./test.py $arg1 $arg2
tensorflow FLAGS
$ python script.py -gpus=0,1,2 --batch_size=10
import tensorflow as tf
tf.app.flags.DEFINE_string('gpus', None, 'gpus to use')
tf.app.flags.DEFINE_integer('batch_size', 5, 'batch size')
FLAGS = tf.app.flags.FLAGS
def main(_):
print FLAGS.gpus
print FLAGS.batch_size
if __name__=="__main__":
tf.app.run()
__future__
Python 3 兼容 Python 2.x 的方案項目包
"""Implementation of the flags interface."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse as _argparse
from tensorflow.python.util.all_util import remove_undocumented
_global_parser = _argparse.ArgumentParser()
# pylint: disable=invalid-name
https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/python/platform/flags.py
https://tensorflow.google.cn/?hl=zh-cn
demos
sys
#!/usr/bin/python3
# coding: utf8
import RPi.GPIO as GPIO
import time
import sys
arg1 = sys.argv[1]
print("arg1 =", arg1);
# 指定 BCM 模式下的GPIO 針腳編號
PIN = 12
# BCM 模式
GPIO.setmode(GPIO.BCM)
# 指定 GPIO 針腳爲一個電流輸出針腳
GPIO.setup(PIN, GPIO.OUT)
# 輸出低電平
GPIO.output(PIN, GPIO.LOW)
# index
i = 0
# max
# n = 7
# 類型轉換,str => int
n = int(arg1)
print("n =", n)
print('開始閃爍⏳')
while (i < n):
print("i =", i)
# 高電平,LED 點亮
GPIO.output(PIN, GPIO.HIGH)
# 休眠 1 秒,防止 LED 長時間點亮燒壞了
time.sleep(1.0)
# 低電平,LED 熄滅
GPIO.output(PIN, GPIO.LOW)
# 休眠 1 秒
time.sleep(1.0)
i = i + 1
# 輸出低電平,LED 關閉
# GPIO.output(PIN, GPIO.LOW)
# 清除,釋放內存
GPIO.cleanup()
print('結束閃爍 👌🏻')
(🐞 反爬蟲測試!打擊盜版⚠️)如果你看到這個信息, 說明這是一篇剽竊的文章,請訪問 https://www.cnblogs.com/xgqfrms/ 查看原創文章!
Python 3
vs Python 2
Python3.x 與 Python2.x 版本區別
如果 Python2.x 版本想使用使用 Python3.x 的 print 函數,可以導入 __future__
包;
該包禁用
Python2.x 的 print 語句
,採用 Python3.x 的 print() 函數
:
https://www.runoob.com/python/python-2x-3x.html
https://www.runoob.com/python/python-tutorial.html
https://www.runoob.com/python3/python3-tutorial.html
refs
https://www.cnblogs.com/xgqfrms/p/17269990.html#5162857
https://www.runoob.com/python/python-command-line-arguments.html
https://cloud.tencent.com/developer/article/1809689
https://www.cnblogs.com/mrwhite2020/p/16812198.html
©xgqfrms 2012-2021
www.cnblogs.com/xgqfrms 發佈文章使用:只允許註冊用戶纔可以訪問!
原創文章,版權所有©️xgqfrms, 禁止轉載 🈲️,侵權必究⚠️!