我正在尝试为使用python的MS-DOS样式程序创建一个非常简单的文本编辑器。当我尝试创建段落时,我的问题出现了。按我的方式,按Enter
告诉它保存输入。我理解我做错了什么,但我怎么能解决它,我怎么能打破输入?到目前为止,我有这个:
def textwriter():
print("")
print("Start typing to begin.")
textwriterCommand = input(" ")
saveAs = input("Save file as: ")
with open(saveAs, 'w') as f:
f.write(textwriterCommand)
答案 0 :(得分:2)
指定其他一些EOF序列,例如:
EOF_SEQ = 'EOF'
def textwriter():
print("")
print("Start typing to begin.")
buffer = ''
while EOF_SEQ not in buffer:
buffer += raw_input(" ") + '\n'
saveAs = raw_input("Save file as: ")
with open(saveAs, 'w') as f:
f.write(buffer)
答案 1 :(得分:0)
@ zamuz的answer很好,对于像这样的简单事情很有用,但是当你的代码变得更复杂时,我更喜欢使用像input_constrain这样的东西来实际测试每个按键来决定什么做下一个。 (完全披露:我写了这个。)
例如,在用户按下logger
(垂直条)之前读取输入:
|
或者,读取输入直到 CTRL - C 或 CTRL - D (或任何其他不可打印的控件字符):
from input_constrain import until
def textwriter():
print("")
print("Start typing to begin.")
textwriterCommand = until("|")
saveAs = input("Save file as: ")
with open(saveAs, 'w') as f:
f.write(textwriterCommand)
这使用了一个可选的from input_constrain import until_not
from string import printable as ALLOWED_CHARS
def textwriter():
print("")
print("Start typing to begin.")
textwriterCommand = until_not(ALLOWED_CHARS, count=5000, raw=True)
saveAs = input("Save file as: ")
with open(saveAs, 'w') as f:
f.write(textwriterCommand)
参数,该参数将在这么多按键之后停止读取。 count
很重要,否则, CTRL - C 和 CTRL - D 会抛出异常。通过使用raw=True
,我们可以打破并继续手头的任务。
重要:您需要提交06e4bf3e72e23c9700734769e42d2b7fe029a2c1,因为它包含修复但没有重大更改