如何在Python中没有换行符的情况下输入?

时间:2018-06-30 18:06:48

标签: python

我正在尝试通过控制台(称为PyCons)在Python中创建一个简单的文件编辑器。这是我当前的程序:

def PyCons(f):
  file = open(f, "r")
  appe = open(f, "a")
  print("\n=====\nPyCons Editor, v1.2\nPython 3.6.1\n")
  global i
  i = 0
  for line in file:
    i += 1
    print(" {}|  ".format(i) + line, end='')
  for k in range(10000000000000):
    print("\n {}| ".format(i+1), end='')
    inp = input("")
    if inp == "@PyCons.save()":
      print("\n=====")
      break
    else:
      i += 1
      appe.write("\n" + inp)

我使用了end方法来确保文件中的现有代码以行格式正确打印,但是input函数没有end属性。因此,当我在编辑器中输入代码时:

PyCons("magic.html")    
...

=====
PyCons Editor, v1.2
Python 3.6.1

 1|  <p>Hello!</p>
 2|  <h1>Big text!</h1>
 3|  <h2>Smaller text!</h2>
#Should be no spaces here
 4|  <p>More stuff!</p>
#No spaces here either
 5|  @PyCons.save()

=====

...我的输入之间有很大的,讨厌的空间。有人知道一种抑制该空间输出的方法,类似于end=''所使用的print function方法吗?

编辑:供参考的项目位置:https://repl.it/@xMikee/File-Editing

1 个答案:

答案 0 :(得分:2)

输入中的换行符只是控制台中的本地回显。您可以在屏幕上看到它们,但是input函数实际上并没有返回它们。

真正的问题是在每个行号之前显式打印的换行符。删除\n,使打印行号的行变为:

print(" {}| ".format(i+1), end='')

此外,您正在加载的文件不一定在末尾有换行符,因此您需要检测到该情况并打印换行符。请注意我在第一个for循环之后添加的内容:

def PyCons(f):
    file = open(f, "r")
    appe = open(f, "a")
    print("\n=====\nPyCons Editor, v1.2\nPython 3.6.1\n")
    global i
    i = 0
    for line in file:
        i += 1
        print(" {}| ".format(i) + line, end='')
    if not line.endswith('\n'):
        print()
    for k in range(10000000000000):
        print(" {}| ".format(i+1), end='')
        inp = input("")
        if inp == "@PyCons.save()":
            print("\n=====")
            break
        else:
            i += 1
            appe.write("\n" + inp)