相关疑难解决方法(0)

在终端上打印颜色?

如何在Python中将彩色文本输出到终端?表示实体块的最佳Unicode符号是什么?

python unicode terminal ansi-colors

1929
推荐指数
51
解决办法
110万
查看次数

记录器配置以记录到文件并打印到stdout

我正在使用Python的日志记录模块将一些调试字符串记录到一个非常好的文件中.现在另外,我想使用这个模块也将字符串打印到stdout.我该怎么做呢?为了将我的字符串记录到文件,我使用以下代码:

import logging
import logging.handlers
logger = logging.getLogger("")
logger.setLevel(logging.DEBUG)
handler = logging.handlers.RotatingFileHandler(
    LOGFILE, maxBytes=(1048576*5), backupCount=7
)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
Run Code Online (Sandbox Code Playgroud)

然后调用一个记录器函数

logger.debug("I am written to the file")
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

python logging stdout file

310
推荐指数
7
解决办法
21万
查看次数

在java控制台中打印一行(与'\n'相反)

前言

我在其他语言中看到了一些与此相关的问题,并对此进行了相当多的研究.首先,在我们开始走下兔洞之前,我必须说明我为什么这样做.我正在打印一个二叉树,我找到了一种方法来做到这一点,我认为没有其他人找到它(在网上的任何地方找不到它我永远搜索过).它解决了很多与间距和冲突有关的问题,我可能会在以后提供它作为Prettyprint Btree问题的答案.无论如何,执行上述操作的一个重要部分是能够将换行符(光标)向上移动一行.我也会安排将一个回车移动一行.

我已经对这个名为"编辑1-3"的问题进行了三次编辑.

我的特定Windows版本(可能相关):Windows 10 v1607操作系统版本:14393.2035

问题??

问题是使用ANSI转义字符很容易完成

ANSI转义码:https://en.wikipedia.org/wiki/ANSI_escape_code

使用"\ 033 [A"是我想要实现的特定代码(从有关在python中移动一行的问题得到它).

问题

所以问题解决了吗?哦不,甚至不接近.该问题是,显然窗户上挂着这个""" 精彩 '’"更新,可能有破产一切ANSI /控制台有关.下面链接到有关此问题,但具有不同的ANSI要求,但根本问题是相同的.

如何使用System.out.println在控制台中打印颜色?

tl:dr由于某些原因它不适用于Windows,你需要一个大型库来执行此操作或其他操作.

Sooo然后我尝试对更新本身做一些深入的研究,为什么这恰好是特定于Windows的(当然),我被引导到了这一点.

Windows问题的根本原因:https://github.com/Microsoft/WSL/issues/1173

tl; dr:基本上,更新更改了cmd.exe的默认设置,cmd.exe是java使用的默认控制台.更改的是如何为'子应用程序'AKA java处理ANSI代码的控制台设置(使用控制台但不是控制台本身的东西).默认值在更新之前,子应用程序继承了启用ANSI的默认控制台.现在(因为显然以前的默认设置破坏了东西)他们改变了它,以便子应用程序不从控制台继承默认设置.这意味着如果java想要启用ANSI,java必须自己有效地设置此控制台模式.显然有大量的libary用于java命令,但是有很多可用的库存有一些问题.首先他们需要maven,我不想要maven,我也不喜欢 喜欢需要一百万个额外的库来做一些非常简单的事情,它增加了我的代码依赖的东西(这很糟糕).所以我试图避免像"只使用JANSI"这样的简单解决方案setConsoleMode 对于ANSI.

我在此之后尝试过的

在我完成阅读/理解后,我尝试进入我的注册表编辑器并尝试更改控制台的默认设置(cmd.exe),以便始终为子应用程序启用ANSI(AKA java).有人在github讨论中提出过建议,但令我惊讶的是,具体设置对我来说并不存在.(它应该在计算机 - > HKEY_CUURENT_USER - >"TrimLeadingZeros"和"WindowAlpha"之间的控制台中).

试试2

由于我无法编辑控制台设置而没有大型库充满了我不想要的东西,我尝试在盒子外面思考并且在java设置中搞砸了.我发现java确切地设置了它的控制台,并发现我可以更改该设置以在java中使用不同的控制台.我最近安装了git,并且知道git bash可用,所以我尝试使用下面的问题(以及谷歌一般)作为起点.

https://superuser.com/questions/1196463/start-sh-exe-bash-with-given-path

第三次是魅力?

我无法找到合适的工作.它没有返回任何错误或做任何新的事情,就像所有.它甚至被设置为'当前项目',所以当我运行我的项目时,它应该做些不同的事情吗?我相信问题的一部分是我的根git文件夹是搞乱的(不在程序文件中).这可能是因为我使用的计算机是一台工作计算机,也许某些设置会影响安装git的位置,我不知道但我知道的是当我更改控制台时我尝试了这条路径:

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\bash.exe

我也尝试过:

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\bash.exe

C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\sh.exe

"C:\ Users\abbotts1\AppData\Local\Programs\Git\bin\sh.exe"--login -i

每次更改控制台后我都试过这段代码:

public class ExpressionEvaluator {

    public static void main(String[] args) {
        System.out.println("1"); …
Run Code Online (Sandbox Code Playgroud)

java io ansi windows-console

19
推荐指数
1
解决办法
557
查看次数

使用ANSI/VT100代码在PowerShell控制台中输出彩色文本

我编写了一个打印字符串的程序,该字符串包含ANSI转义序列以使文本着色.但它在默认的Windows 10控制台中无法正常工作,如屏幕截图所示.

程序输出显示为转义序列作为打印字符.如果我通过变量或管道将该字符串提供给PowerShell,则输出将按预期显示(红色文本).

如何才能实现程序打印彩色文本而无需任何解决方法?

在此输入图像描述

这是我的程序源(Haskell) - 但语言不相关,只是这样你就可以看到如何编写转义序列.

main = do
    let red = "\ESC[31m"
    let reset = "\ESC[39m"
    putStrLn $ red ++ "RED" ++ reset
Run Code Online (Sandbox Code Playgroud)

powershell ansi vt100 windows-console

14
推荐指数
2
解决办法
5797
查看次数

覆盖/清除以前的控制台线路

我的问题是,我希望能够在python控制台中覆盖/清除以前的打印行.这个问题已被多次询问(例如,Python - 删除和替换打印项目),但是使用相同的代码(答案标记为正确,对我来说什么都没打印):

for i in range(10):
    print("Loading" + "." * i)
    time.sleep(1)
    sys.stdout.write("\033[F") # Cursor up one line
    sys.stdout.write("\033[K") # Clear to the end of line
Run Code Online (Sandbox Code Playgroud)

我得到输出(在python IDLE中):

Loading
[F[KLoading.
[F[KLoading..
[F[KLoading...
[F[KLoading....
[F[KLoading.....
[F[KLoading......
[F[KLoading.......
[F[KLoading........
[F[KLoading.........
[F[KLoading..........
[F[K
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我google了很多,没有什么工作真的.它可以打印出任何内容,也可以不覆盖.

如果这有帮助,我运行的是Windows 8.1和Python 3.51.通过cmd运行代码不会影响任何内容.

此外,添加sys.stdout.flush()没有帮助.

python stdout python-3.x

7
推荐指数
1
解决办法
8540
查看次数