j178 / fanfou-cli

饭否命令行客户端
MIT License
23 stars 5 forks source link

Use system clear #3

Closed LitoMore closed 7 years ago

LitoMore commented 7 years ago

use os.system('clear') instead of print('\n' * 100)

j178 commented 7 years ago

使用os.system('clear')有两个问题:

  1. 无法跨平台,比如Windows下就无法工作。我也试过对它做跨平台处理,比如Windows下使用os.system('cls'),但是总是有各种奇怪的问题,所以就放弃了
  2. 打印100个换行有一个好处,就是还可以回翻查看之前的内容。如果之前的屏幕上有一些重要内容的话,这样还是可以重新看到的

谢谢你的PR,😁如果有更好的解决办法,我会接受的^^

LitoMore commented 7 years ago

原来如此!

http://stackoverflow.com/a/18937214/7819703

这个解决方案可以吗? 一会儿我找台 windows 试一下好了

j178 commented 7 years ago

这个使用的是Linux下的curses库,Windows就更没法用了/_\

LitoMore commented 7 years ago

改成了 os.system('cls' if os.name == 'nt' else 'clear')

j178 commented 7 years ago

Linux下使用clear是没问题的,但是Windows下面问题没有这么简单… 比如说,有的人使用的cygwin或者mintty,这时候os.name=='nt',但是cls却无法工作… Windows下面的各种终端太麻烦了…

LitoMore commented 7 years ago

Blocked. Closing.

j178 commented 7 years ago

看了一下 inquirer 的源码,发现它使用了一些特殊的字符序列来控制终端,比如说 \x1Bc 就是清空屏幕,应该说这是这个问题的最好解决方案了。 相关的资料:https://en.wikipedia.org/wiki/ANSI_escape_code