如果我运行代码:
connection = manager.connect("I2Cx")
Run Code Online (Sandbox Code Playgroud)
程序崩溃并报告KeyError,因为I2Cx不存在(它应该是I2C).
但如果我这样做:
try:
connection = manager.connect("I2Cx")
except Exception, e:
print e
Run Code Online (Sandbox Code Playgroud)
它没有为e打印任何东西.我希望能够打印抛出的异常.如果我尝试使用除零操作来执行相同操作,则会在两种情况下都正确捕获并报告.我在这里错过了什么?
我正试图找到一种方法来找出调用函数的文件和行号.该函数位于库文件中,该文件由我的脚本提供.
文件1:
$source file2
$warn_me "Error: You didn't do something"
Run Code Online (Sandbox Code Playgroud)
文件2:
$function warn_me() {
$ message=????
$ echo ${message}
$}
Run Code Online (Sandbox Code Playgroud)
期望的输出: $:file1:第2行:错误:你没有做任何事情
函数调用已经在很多文件中多次出现,所以我试图找到一种方法来做到这一点而不改变它.
以前warn_me函数是在每个使用它的文件中定义的,并且这样做是这样的:
$local message="$BASH_SOURCE:(""${BASH_LINENO}): ""$*"
Run Code Online (Sandbox Code Playgroud) 当用户按下返回键时,我试图让我的脚本触发用户输入.然后主程序将检查txUpdated标志并使用此输入.
我有一个在python中运行的线程,它只是等待用户输入:
class InputThread(threading.Thread):
def __init__(self, threadID, name):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
def run(self):
global screenLock
global txUpdated
global txMessage
global endFlag
lock = threading.Lock()
print "Starting " + self.name
while not endFlag:
txMessage = raw_input()
if (txMessage == ""):
screenLock = 1
txMessage = raw_input("Enter Tx String: ")
screenLock = 0
with lock:
txUpdated = 1
print "Exiting " + self.name
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何在没有接收用户输入的情况下结束此线程.即使我的主程序设置了endFlag,线程也不会结束,直到用户再输入一个输入.
有没有人对如何做到这一点有任何建议?
输入变量包含:
key1-key2-key3_command
Run Code Online (Sandbox Code Playgroud)
输出需要是:
command -k key1 -k key2 -k key3
Run Code Online (Sandbox Code Playgroud)
警告:键数可以从1到3不等.
我已经计算了破折号的数量,并使用if语句为每个键创建一个布尔指示符(即key1 = 1,unset key2).然后,${parameter:+word}
如果设置了该键的标志,我将使用类似的东西来添加密钥.它开始变得有点凌乱,所以我想我会在这里询问实现这一目标的最佳方法是什么.