<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中的彩色提示

        时间:2024-08-21
        • <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中的彩色提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:返回二叉搜索树的最小和最大元素-Python 下一篇:如何在Python中测试命令行应用程序?

                  相关文章

                  • <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>

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

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