使用 python argparse 库(命令行工具)写参数说明太长会乱码

2014-08-12 19:02:24 +08:00
 dengqianyi
self._parse = argparse.ArgumentParser(usage='项目编译脚本说明',description='create by dengqianyi')
self._parse.add_argument('-file',help=str('可以从文件中读取已配置好的参数,手动输入的其他参数值将覆盖从文件中获得的参数值,文件需要和build.py同一目录下,非必须'))

代码如上,在命令行中‘--help’时,-file的说明会如下

-file FILE 可以从文件中读取已配置好的参数,手动?
?入的其他参数值将覆盖从文件中获得的?
?数值,文件需要和build.py同一目录下,非必?
??

大家有碰到过没?有啥好的解决方案?有别的库可以使用不?
4954 次点击
所在节点    Python
10 条回复
exoticknight
2014-08-12 19:51:17 +08:00
立刻去试了一下的确是这样咧
感觉是换行的地方除了问题啊
exoticknight
2014-08-12 19:53:44 +08:00
比较取巧的解决方法:在换行的地方加上空格,solved~
ehs2013
2014-08-12 21:16:31 +08:00
被截半字了吧……
dengqianyi
2014-08-12 21:51:21 +08:00
@exoticknight 这解决方法不行啊,我在mac 下,可以显示的中文字就没你那么长,空格位置不好加。不知道可以换种写法,或者用其他库行不?
exoticknight
2014-08-12 22:02:31 +08:00
@dengqianyi 这个就不清楚呢,不过原因应该就是3楼说的被截了吧……其实你看哪里被截了就在那打上两个空格就可以了
jedihy
2014-08-12 22:08:26 +08:00
gnu有个c的库,专门解析这个,能否参考?
pyKun
2014-08-12 22:19:47 +08:00
是个bug,刚看了下源码,http://hg.python.org/cpython/file/default/Lib/argparse.py#l217

问题就是“截半字”

len('中') == 3
len('中'.decode('utf8')) == 1
chilaoqi
2014-08-12 23:07:29 +08:00
为毛我随便用以前的代码测了下,貌似可以啊。。。
https://gist.github.com/chixq/375712e092dc1ebe22f3
est
2014-08-12 23:10:48 +08:00
知足吧。 mac 下 emoji 还是占用半个字符位置呢。
chilaoqi
2014-08-12 23:14:41 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX