GhPython与Python:来自GH的TypeErrorException,但不是来自Shell

时间:2017-12-12 20:58:32

标签: python exception grasshopper

我正在使用一个名为func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { if textView == postCommentTextView { if textView.text == "#" { recordingHash = true recordingMention = false startParseHash = range.location } else if textView.text == "@" { recordingHash = false recordingMention = true startParseMention = range.location } else if textView.text == " " { recordingHash = false recordingMention = false createdHashesArray.append(createdHashString) createdHashString = "" } if recordingHash != nil { if recordingHash == true { var value = String() print("COUNT: \(textView.text.count)") if startParseHash <= (textView.text.count - startParseHash) { let createdRange = NSMakeRange(startParseHash, textView.text.count - startParseHash) value = textView.text(in: createdRange.toTextRange(textView)!)! //as! NSString createdHashString = "\(value)" // print("hash:\(createdHashString)") } print("hash:\(createdHashString)") if textView.text.count == 0 { recordingHash = false recordingMention = false // createdHashesArray.append(createdHashString) createdHashString = "" } } } return true } 的库与来自蚱蜢的Kuka机器人手臂进行通信。

如果我从命令行python shell运行程序,一切正常。但是,当我从GhPython运行相同的东西时,我得到以下内容:

<code>TypeErrorException</code>

我不知道为什么我会在GhPython中获得异常,但是当我在GH环境之外运行时却没有。该程序仍然连接到服务器并检索/发送我需要的信息,但我想确保并解决此异常。

谢谢!

2 个答案:

答案 0 :(得分:0)

很难告诉你如何修复错误,因为你没有提供触发它的代码,但实质上它来自GHPython是IronPython(基于.Net的Python的实现)而Python Shell的事实是用C编写的实现。

这两种实现方式类似,但有时会产生差异。

在您的情况下,脚本需要stringtuple,但会获得IronPython.Runtime.Bytes

答案 1 :(得分:0)

嗯,当期望str看起来像unicode字符串vs字节字符串问题时得到字节。你没有描述你的CPython和GHPython的版本,但是你应该知道Python 2的字符串是字节串,而Python 3的字符串是unicode字符串。

如果在Python 2中,您可以通过在u前面添加一个字符串来强制使用unicode:u"foo"是一个unicode字符串。您还可以解码字节字符串到其unicode版本:b'ae\xe9\xe8'.decode('Latin1')是unicode字符串u'aeéè'