Принудительный вывод в одну строку в python

Я знаком с переносом текста, однако мне было интересно, есть ли способ предотвратить перенос текста. Если у вас есть длинная инструкция печати, когда она достигает конца строки, она автоматически оборачивается и начинает новую строку. Есть ли способ заставить его напечатать весь оператор в одну строку, даже если он не подходит? Я бы предпочел, чтобы текст обрезался, когда он достигает конца окна, а не переносился на следующую строку.

Точнее: я пытаюсь перечислить содержимое каталога в одну строку и только одну строку, потому что в следующей строке будет перечислено содержимое другого каталога. Он предназначен только для предварительного просмотра содержимого каталога, поэтому мне все равно, не выводит ли программа все содержимое, если они не помещаются в одну строку. Тем не менее, я хочу использовать как можно больше горизонтального пространства. Вместо того, чтобы вносить кодовый фактор в ширину окна (даже если пользователь изменяет его размер) и длину каждого имени файла, чтобы определить, сколько имен файлов может поместиться в одной строке. Мне было любопытно, было бы проще и эффективнее просто обрезать текст в конце строки, тем более что ни в одном из каталогов не должно быть более 15 файлов, а зачастую их меньше (но иногда содержимое может ' т все умещается на одной линии). Вот грубый пример того, что я пытаюсь:

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()

1 ответ

Решение

Для любой заданной ширины:

print_width = 79

Просто распечатайте фрагмент содержимого каталога, соединенного пробелами:

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

Если вы не знаете ширину, но можете печатать юникод, вы можете попытаться заменить пробелы неразрывными пробелами, и это может сработать, если ваш фрейм не принудительно переносит:

print(u"\u00A0".join(os.listdir(wd)))
Другие вопросы по тегам