当 运行 @click.command 时程序停止
Program stops when running @click.command
我正在使用 @click.command
对我的代码做一些事情。但是,在此之前,我尝试了代码:
import click
import random
@click.command()
@click.option('--total', default=3, help='Number of vegetables to output.')
def veg(total):
""" Basic method will return a random vegetable"""
for number in range(total):
print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']))
if __name__ == '__main__':
veg()
print('End function')
我不明白为什么程序在完成 veg()
函数后立即停止。我需要做什么才能保留程序 运行ning 和 运行 print('End function')
?
那是因为默认行为是在独立模式下调用脚本。然后 Click 将处理异常并将它们转换为错误消息,该函数永远不会 return 但会关闭解释器。 - docs.
将 standalone_mode
设置为 False 以更改它:
import click
import random
@click.command()
@click.option('--total', default=3, help='Number of vegetables to output.')
def veg(total):
""" Basic method will return a random vegetable"""
for number in range(total):
print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']))
if __name__ == '__main__':
veg.main(standalone_mode=False)
print('End function')
Turnip
Carrot
Carrot
End function
我正在使用 @click.command
对我的代码做一些事情。但是,在此之前,我尝试了代码:
import click
import random
@click.command()
@click.option('--total', default=3, help='Number of vegetables to output.')
def veg(total):
""" Basic method will return a random vegetable"""
for number in range(total):
print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']))
if __name__ == '__main__':
veg()
print('End function')
我不明白为什么程序在完成 veg()
函数后立即停止。我需要做什么才能保留程序 运行ning 和 运行 print('End function')
?
那是因为默认行为是在独立模式下调用脚本。然后 Click 将处理异常并将它们转换为错误消息,该函数永远不会 return 但会关闭解释器。 - docs.
将 standalone_mode
设置为 False 以更改它:
import click
import random
@click.command()
@click.option('--total', default=3, help='Number of vegetables to output.')
def veg(total):
""" Basic method will return a random vegetable"""
for number in range(total):
print(random.choice(['Carrot', 'Potato', 'Turnip', 'Parsnip']))
if __name__ == '__main__':
veg.main(standalone_mode=False)
print('End function')
Turnip
Carrot
Carrot
End function