【问题标题】:Python sys.argv alternative, Unicode bugPython sys.argv 替代方案,Unicode 错误
【发布时间】:2014-08-16 18:16:27
【问题描述】:

我一直在使用os.path.abspath(sys.argv[0]) 来获取我的 exe 始终运行的路径(不管它是从哪里执行的),但是 python 2.x 有一个问题 sys.argv http://bugs.python.org/issue2128 尝试使用 unicode林间空地(PYGTK)文件的脚本路径

self.gladeloc = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])),"file.glade")
print self.gladeloc #prints fine C:\Users\фдсфгс\Desktop\ using idle console
self.builder.add_from_file(self.gladeloc) #prints C:\Users\пїЅпїЅпїЅ\Desktop\

我收到以下错误是否有替代方法可以在磁盘上获取 exe 位置(无论在哪里打开)我已经搜索了其他问题,似乎没有 2 个问题没有替代方法

1 获取文件位置,即使从不同的地方执行

2 unicode/utf-8 支持 pygtk 不支持 python 3 (fixed sys.argv) 所以我不能只升级

【问题讨论】:

  • 错误报告包含一个解决方法。
  • 其实repr(self.gladeloc) 打印的是什么?在我看来,这确实是一个不同的问题。
  • @MartijnPieters 我无法做到有一个例外,但我的回答似乎使它起作用

标签: python python-2.7 pygtk


【解决方案1】:

找到这个Answer 它将更改 sys.argv 函数以返回 py2.x 的 unicode。但在我看来,它的工作方式至少与原来的 sys.argv 不同,对于空闲控制台它显示了 python.exe 的路径,对于 cmd 控制台它显示正确 file.py 但我发现我认为更好的解决方案不会编辑 sys.argv。 argv 和空闲控制台显示正确的 file.py unicode 类型 os.path.abspath(sys.argv[0].decode('mbcs')) 对此的反馈会很棒,也许我错过了什么?如果它不能正常工作,我会尝试做更多的测试和更新

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多