【问题标题】:Force print statement to a single line in python强制打印语句到python中的单行
【发布时间】:2014-07-11 18:51:37
【问题描述】:

我对文本换行很熟悉,但是我想知道是否有办法防止文本换行。如果你有一个很长的打印语句,当它到达行尾时,它会自动换行并开始一个新行。有没有一种方法可以强制它将整个语句打印到一行,即使它并不完全适合?我宁愿文本在到达窗口末尾时被切断,而不是换行到下一行。

更准确地说:我试图在一行中列出一个目录的内容,而且只有一行,因为下一行将列出不同目录的内容。它只是为了预览目录包含的内容,所以我不在乎程序是否输出所有内容,如果它们不能全部放在一行中。但是,我希望它利用尽可能多的水平空间。而不是将代码因素考虑到窗口的宽度(即使用户调整它的大小)和每个文件名的长度来确定它可以在一行中容纳多少个文件名。我很好奇在行尾删除文本是否会更容易和更有效,特别是因为没有一个目录将有超过 15 个文件并且通常更少(但有时内容可以' t都适合一行)。这是我正在尝试的一个粗略示例:

import os
while 1:
    wd = input("Input full path for directory: ")
    try:
        os.listdir(wd)
    except:
        print("invalid input...")
        continue
    break
list = os.listdir(wd)
print(wd, ": ", end=" ")
try:
    print(os.listdir(wd)) # THIS IS WHERE I WANT TO FORCE THE OUTPUT TO A SINGLE LINE
except:
    print()

【问题讨论】:

  • 不要使用list作为变量名。
  • 如果你不知道窗口有多大,你怎么知道“在末尾剪掉文本”多少?文本换行可能是由终端完成的,因此即使您决定从单行输出的末尾截掉固定数量的字符,调整窗口大小也可能导致输出换行。

标签: python python-3.x printing string-formatting


【解决方案1】:

对于任何给定的宽度:

print_width = 79

只需打印一段由空格连接的目录内容:

print(' '.join(os.listdir(wd))[:print_width])

如果您不知道宽度但可以打印 unicode,您可以尝试用不间断空格替换空格,如果您的框架不强制换行,它可能会起作用:

print(u"\u00A0".join(os.listdir(wd)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2017-07-17
    • 2014-03-26
    • 1970-01-01
    相关资源
    最近更新 更多