<small id='ZIJ1Z'></small><noframes id='ZIJ1Z'>

    <tfoot id='ZIJ1Z'></tfoot>
      <bdo id='ZIJ1Z'></bdo><ul id='ZIJ1Z'></ul>

    1. <i id='ZIJ1Z'><tr id='ZIJ1Z'><dt id='ZIJ1Z'><q id='ZIJ1Z'><span id='ZIJ1Z'><b id='ZIJ1Z'><form id='ZIJ1Z'><ins id='ZIJ1Z'></ins><ul id='ZIJ1Z'></ul><sub id='ZIJ1Z'></sub></form><legend id='ZIJ1Z'></legend><bdo id='ZIJ1Z'><pre id='ZIJ1Z'><center id='ZIJ1Z'></center></pre></bdo></b><th id='ZIJ1Z'></th></span></q></dt></tr></i><div id='ZIJ1Z'><tfoot id='ZIJ1Z'></tfoot><dl id='ZIJ1Z'><fieldset id='ZIJ1Z'></fieldset></dl></div>

    2. <legend id='ZIJ1Z'><style id='ZIJ1Z'><dir id='ZIJ1Z'><q id='ZIJ1Z'></q></dir></style></legend>
      1. 某些字符坚持我在Python cmd中的彩色提示

        Some characters stick to my colorized prompt in Python cmd(某些字符坚持我在Python cmd中的彩色提示)
        • <bdo id='S674k'></bdo><ul id='S674k'></ul>
          <legend id='S674k'><style id='S674k'><dir id='S674k'><q id='S674k'></q></dir></style></legend>
        • <tfoot id='S674k'></tfoot>

          <small id='S674k'></small><noframes id='S674k'>

              <i id='S674k'><tr id='S674k'><dt id='S674k'><q id='S674k'><span id='S674k'><b id='S674k'><form id='S674k'><ins id='S674k'></ins><ul id='S674k'></ul><sub id='S674k'></sub></form><legend id='S674k'></legend><bdo id='S674k'><pre id='S674k'><center id='S674k'></center></pre></bdo></b><th id='S674k'></th></span></q></dt></tr></i><div id='S674k'><tfoot id='S674k'></tfoot><dl id='S674k'><fieldset id='S674k'></fieldset></dl></div>

                    <tbody id='S674k'></tbody>
                • 本文介绍了某些字符坚持我在Python cmd中的彩色提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在使用Python 2's cmd module为程序创建命令行。只要我不给提示符添加颜色,一切都会正常运行。

                  工作代码:

                  from cmd import Cmd
                  
                  class App(Cmd):
                  
                      def __init__(self):
                          Cmd.__init__(self)
                          self.prompt = "PG ["+ (str('username'), 'green') +"@"+ str('hostname') +"]: "
                  
                      def do_exit(self, line):
                          '''
                          '''
                          return True
                  
                  App().cmdloop()
                  

                  当我按如下方式更改代码时,如果我输入一个长命令或尝试在命令历史记录中搜索,某些字符将停留在我的提示符上。

                  问题代码:

                  from cmd import Cmd
                  
                  class App(Cmd):
                  
                      def __init__(self):
                          Cmd.__init__(self)
                          self.prompt = "PG ["+ self.colorize(str('username'), 'green') +"@"+ str('hostname') +"]: "
                  
                      colorcodes =    {'green':{True:'x1b[32m',False:'x1b[39m'}}
                  
                  
                      def colorize(self, val, color):
                          return self.colorcodes[color][True] + val + self.colorcodes[color][False]
                  
                      def do_exit(self, line):
                          '''
                          '''
                          return True
                  
                  App().cmdloop()
                  

                  您可以在asciicasts中看到此问题。cmd2 module也存在此问题。

                  推荐答案

                  只需向您的颜色代码添加标记:

                      colorcodes =    {'green':{True:'x01x1b[32mx02',False:'x01x1b[39mx02'}}
                                                    # ^^^^        ^^^^         ^^^^        ^^^^
                  
                  在asciicast中,当您退出i-search模式时出现问题,提示符会重新打印。这是因为Python不知道转义字符实际上不会占用屏幕上的空间。在每个转义序列之前放置x01,在每个转义序列之后放置x02,这会告诉Python假定这些字符不占用空间,因此提示符将被正确重新打印。

                  这与this answer中的解决方案相同,后者在不同的上下文中有相应的问题。在Python readline文档中有open issue提到这一点,但我没有看到它已经完成。

                  我在Cygwin上使用Python2.7.12测试了上述colorcodes值,运行在mintty中。在提示符中,username打印为绿色,其他所有内容均打印为默认值(浅灰色)。我使用的是标准系统cmd模块,不是cmd2(您链接的)。

                  这篇关于某些字符坚持我在Python cmd中的彩色提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                  Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                  Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                  Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                  Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
                  Grouping pandas DataFrame by 10 minute intervals(按10分钟间隔对 pandas 数据帧进行分组)
                      • <bdo id='d4aL6'></bdo><ul id='d4aL6'></ul>

                        <i id='d4aL6'><tr id='d4aL6'><dt id='d4aL6'><q id='d4aL6'><span id='d4aL6'><b id='d4aL6'><form id='d4aL6'><ins id='d4aL6'></ins><ul id='d4aL6'></ul><sub id='d4aL6'></sub></form><legend id='d4aL6'></legend><bdo id='d4aL6'><pre id='d4aL6'><center id='d4aL6'></center></pre></bdo></b><th id='d4aL6'></th></span></q></dt></tr></i><div id='d4aL6'><tfoot id='d4aL6'></tfoot><dl id='d4aL6'><fieldset id='d4aL6'></fieldset></dl></div>
                        <tfoot id='d4aL6'></tfoot>
                          <tbody id='d4aL6'></tbody>

                          <small id='d4aL6'></small><noframes id='d4aL6'>

                            <legend id='d4aL6'><style id='d4aL6'><dir id='d4aL6'><q id='d4aL6'></q></dir></style></legend>