除非我在shell窗口中按ENTER键,否则不会使用python创建新的文本文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了除非我在shell窗口中按ENTER键,否则不会使用python创建新的文本文件相关的知识,希望对你有一定的参考价值。

我是python的新手,正在编写一个从文本文件中取一个句子的脚本,检查它的拼写并将结果返回到一个新的文本文件。当我运行脚本时,shell窗口打开,新的文本文件没有创建,除非我在shell窗口中按ENTER键。我想直接发生创作而不按ENTER。我该如何解决?谢谢。

import sys
import nltk
import enchant
import os
from pathlib import Path
my_file=Path('C:/Users/HP/Documents/result.txt')
if my_file.is_file():
    os.remove("C:/Users/HP/Documents/result.txt")
    save_path='C:/Users/HP/Documents'
    name_of_file=input("result.txt")
    completeName=os.path.join(save_path,name_of_file+"result.txt")
    file1=open(completeName,"w")
    with open ("C:/Users/HP/Documents/test.txt") as myfile:
        data=myfile.read().replace('
','')
    from enchant.checker import SpellChecker
    chkr=SpellChecker("fr")
    chkr.set_text(data)
    for err in chkr:
        var=("ERROR:",err.word)
        file1.write(str(var))
    file1.close()
else:
    save_path='C:/Users/HP/Documents'
    name_of_file=input("result.txt")
    completeName=os.path.join(save_path,name_of_file+"result.txt")
    file1=open(completeName,"w")
    with open ("C:/Users/HP/Documents/test.txt") as myfile:
        data=myfile.read().replace('
','')
    from enchant.checker import SpellChecker
    chkr=SpellChecker("fr")
    chkr.set_text(data)
    for err in chkr:
        var=("ERROR:",err.word)
        file1.write(str(var))
    file1.close()
答案

尝试删除input

name_of_file="result.txt"

如果您希望用户从键盘输入字符串,则需要input。因此,您的程序等待按下ENTER键。

另一答案

删除对input()的调用,该调用要求用户按Enter键以终止输入(如果有)。

name_of_file=input("result.txt")

如果用户只按Enter键,则name_of_file将为空字符串。但是,由于此用户输入用于构造可写文件的路径,因此您应该小心此条目,因为用户可以键入意外的内容,例如../,结果输出文件将是C:/Users/HP/Documents/../result.txt,可能无意中(或可能是故意)覆盖不同的文件。

以上是关于除非我在shell窗口中按ENTER键,否则不会使用python创建新的文本文件的主要内容,如果未能解决你的问题,请参考以下文章

为啥 AutoSuggestion 列表不会在 MFC 中按 Enter 关闭?

除非我调整窗口大小,否则 QML 文本不会更新

除非调整窗口大小,否则组件不会显示 - Java

除非主窗口未聚焦,否则不会更新 QLabel

除非主窗口未聚焦,否则不会更新 QLabel

除非重新启动项目,否则 VS .Net Core Razor 页面不会更新