我有一个python文件,其中包含以下代码
test.py
def sum(a, b):
print(a+b)
def final():
print("Hello")
sum(10, 9)
if __name__=="__main__":
final()
现在我从命令行运行
python test.py
我得到了
Hello
19
现在我想添加一个函数say
,它将从命令行中单独调用。我该怎么做?所以我的更新代码将是
def sum(a, b):
print(a+b)
def say():
print("Yes!!!")
def final():
print("Hello")
sum(10, 9)
if __name__=="__main__":
final()
所以现在我想单独调用函数say
。我试着这样做
python test.py say
但它只输出以前的结果。我怎样才能做到这一点?
答案 0 :(得分:2)
从源文件所在的目录命令行启动python解释器。然后就可以了
from test import say
say()
修改强>
根据上面的评论,您可以检查sys.argv以查找是否使用“say”调用模块:
import sys
if __name__ == '__main__':
if 'say' in sys.argv:
say()
else:
final()
sys.argv是一个列表,其中包含调用模块的所有参数,因此如果您从命令行运行
python test.py say foo bar
然后
sys.argv = ['test.py', 'say', 'foo', 'bar']
在你的程序中。
答案 1 :(得分:2)
您的代码必须以某种方式知道该做什么。这留下了两个选择:
<强> 1。代码将根据外部信息决定做什么:
一个。从环境中读取变量:
import os
if os.environ.get('TERM') == 'xterm-256color':
say()
else:
final()
您可以在调用脚本之前设置环境变量,如下所示:
# set the variable
$ export VARIABLE=VALUE
# Python will recognize it:
$ python -c "import os; print(os.environ.get('VARIABLE'))"
$ VALUE
湾掷骰子:
from random import randint
if randint(0,6) > 3:
say()
else:
final()
<强> 2。您将告诉代码该做什么:
一个。检查sys.argv(参见其他答案)。
湾推荐:使用https://help.apple.com/xcode/mac/8.0/#/dev3ec8a1cb4解析命令:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--say", help="If say, then say", action="store_true")
args = parser.parse_args()
if args.say:
say()
else:
final()
现在,从命令行运行:python test.py --say
Argparse是标准python库的一部分,具有出色的文档,易于使用和阅读,并且(在我看来)非常灵活。
℃。对于稍微大一些的脚本/项目,请使用setuptools入口点: 详情argparse library和on this related question。