我有一个自己似乎无法解决的问题。我正在写一个小的python脚本,我想知道为什么signal.alarm返回它的函数后我仍然可以工作。这是代码:
class AlarmException(Exception):
pass
def alarmHandler(signum, frame):
raise AlarmException
def startGame():
import signal
signal.signal(signal.SIGALRM, alarmHandler)
signal.alarm(5)
try:
# some code...
return 1
except AlarmException:
# some code...
return -1
def main():
printHeader()
keepPlaying = True
while keepPlaying:
score = 0
for level in range(1):
score += startGame()
answer = raw_input('Would you like to keep playing ? (Y/N)\n')
keepPlaying = answer in ('Y', 'y')
Run Code Online (Sandbox Code Playgroud)
因此问题在于,当我的startGame()函数返回时,SIGALRM仍在递减并关闭程序。这是回溯:
Would you like to keep playing ? (Y/N)
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) 我在我的python程序中遇到问题,我有两个可选参数,问题是必须至少有一个这两个参数必须使用但是两个参数不能一起传递,有没有办法这样做与argparse?
这是我目前使用的代码:
parser = argparse.ArgumentParser(description='worker')
arser.add_argument('-i', "--item", type=bool, default=False, required=False)
parser.add_argument('-o', "--offer", type=bool, default=False, required=False)
Run Code Online (Sandbox Code Playgroud)
以下是我希望如何工作的一些示例:
./main.py -i True =>好的
./main.py -o True =>好的
./main.py -o True -i True =>不行