Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否有一个不带换行符的打印函数,该换行符不是sys.stdout.write或print(“";,end=”)?_Python_Python 3.x_Windows_Output_Console Application - Fatal编程技术网

Python 是否有一个不带换行符的打印函数,该换行符不是sys.stdout.write或print(“";,end=”)?

Python 是否有一个不带换行符的打印函数,该换行符不是sys.stdout.write或print(“";,end=”)?,python,python-3.x,windows,output,console-application,Python,Python 3.x,Windows,Output,Console Application,我试图使用python命令行创建一个游戏引擎,但是sys.stdout.write和print('',end='')阻塞了命令行并使其崩溃 我尝试了stdout和print的end关键字参数,但它们会使命令行崩溃。发生什么事了 使用print而不使用end参数的代码可以正常工作: while True: print('

我试图使用python命令行创建一个游戏引擎,但是
sys.stdout.write
print('',end='')
阻塞了命令行并使其崩溃

我尝试了
stdout
print
end
关键字参数,但它们会使命令行崩溃。发生什么事了

使用
print
而不使用
end
参数的代码可以正常工作:

while True:
    print('                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         =                                                                              ===                                                                            =====                                                                          =======                                                                        =========                                                                      ===========                                                                    =============    YYYYYYYYYYY                                                 ================================================================================')
而使用
sys.stdout.write
阻止新行打印的操作存在以下问题:

import sys
while True:
    sys.stdout.write('                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         =                                                                              ===                                                                            =====                                                                          =======                                                                        =========                                                                      ===========                                                                    =============    YYYYYYYYYYY                                                 ================================================================================')
    sys.stdout.flush()

我希望它能通过
print
end
sys.stdout
快速运行,但控制台却陷入停滞并崩溃。

您正在使用空闲的shell运行程序,不要这样做

IDLE无法很好地管理输出文本,并且在输出非常长的文本行时会减慢速度(这就是为什么没有
end
关键字参数的
print
可以正常工作的原因,因为您打印的是多个单独的行,而不是越来越长的一行)

相反,只需使用标准的Windows命令行(cmd.exe)

您可以通过GUI运行.py文件或运行以下命令来完成此操作(假设您的安装配置正确):

python filename.py
在命令行中

早在2006年,Python()中就有这样一个bug的报告,这个问题仍然存在


您可以阅读更多信息,包括堆栈溢出帖子上的一些数字。

“控制台陷入困境并崩溃”这是什么意思?代码对我来说运行良好您使用的是什么命令行?“你所说的崩溃到底是什么意思?”丹·克莱尔说right@NickA我想这就是为什么pep8建议行限制:“)另一种打印到标准输出的方法对您没有帮助。谢谢。难道windows cmd窗口不写过屏幕边缘吗?我一次将整个画面打印到屏幕上,这会把一切搞砸。@killerqouw不,但它的宽度是可调的,您只需适当调整窗口大小,使其显示所需的方式为什么不带end属性的print命令可以正常工作?@KillerQuow更新了答案:这就是为什么不带end关键字参数的print可以正常工作的原因,因为您正在打印多个单独的行,不是越来越长的一行erpython.exe是一个控制台应用程序,这意味着默认情况下它要么从父级继承控制台,要么在父级没有控制台的情况下分配新控制台。控制台是由conhost.exe实例承载的系统资源。我们通常使用诸如cmd.exe或powershell.exe之类的shell启动控制台会话,但是我们可以直接从快捷方式或Win+R菜单运行python.exe,并获得一个不是从shell继承的新控制台。因此,请尽量不要将控制台与cmd.exe混淆。他们根本不是一回事。