要求用户输入文件以使用 python 运行程序

我有一个程序可以连接文本中用星号分隔的法语单词。因为我想让这个程序被不同的用户使用,所以我想在程序中插入一行,要求用户输入文本文件的路径或者简单地输入文本的名称……怎么做?只使用函数“输入”?我不知道......有没有一种优雅的方式让用户运行程序?该程序如下:


import nltk

from nltk.tokenize import word_tokenize

import re




with open ('text-test.txt') as tx:

   words = word_tokenize(tx.read().lower())


with open ('Fr-dictionary.txt') as fr:

    dic = word_tokenize(fr.read().lower())


l=[ ]

errors=[ ]

out_file=open("newtext.txt","w")


for n,word in enumerate (words):

    l.append(word)

    if word == "*":

        exp = words[n-1] + words[n+1]

        print("\nconcatenation error:", exp)


        if exp in dic:


            l.append(exp)

            l.append("$")


            errors.append(words[n-1])


            errors.append(words[n+1])

        else:

           continue


for i, w in enumerate(l):

    if w == "*":

        l.remove(l[i-1])

    else:

        continue


for i, w in enumerate(l):

    if w == "$":

        l.remove(l[i+1])

    else:

        continue



text=' '.join(l)

print('\n\n',text)

e=len(errors)


print('\n',e/2,'WORDS CONCATENATED IN TEXT',errors)



user=input('\nREMOVE * AND $ FROM TEXT? Type "Y" for yes or "N" for 

no:')



for x in l:

    if user=='Y' and x=='*':

        l.remove(x)

    elif user=='Y' and x=='$':

        l.remove(x)

    else:

        continue



final_text=' '.join(l)


print('\n\n', final_text)



user2=input('\nWrite text to a file? Type "Y" for yes or "N" for no:')


if user2 =='Y':

    out_file.write(final_text)

    out_file.close()

    print('\nText named "newtext.txt" written to a file')



慕森王
浏览 222回答 2
2回答

慕田峪4524236

您可以按照自己喜欢的方式进行操作,但让用户写出文件的完整路径既乏味又容易出错。你可以做的是有一个“监视文件夹”。这是您的脚本已经知道的文件夹,甚至可能与您的脚本位于同一文件夹中。一个小例子:import osimport sys# This prints the folder where the script is run.script_directory = os.path.dirname(sys.argv[0])print(script_directory)# This is the folder we want to keep track offour_watched_folder = f'{script_directory}/watch_folder'print(our_watched_folder)# Let's see if a user dropped a new file in our folderprint("Files in watch folder")for file in os.listdir(our_watched_folder):    print(file)输出:C:/your_script_folder/C:/your_script_folder/watch_folderFiles in watch foldera_new_text_file.txtsome_old_textfile1.txtsome_old_textfile2.txt

Qyouu

from pathlib import Pathdata_folder = Path(str(input("type the path you would like to use")))file_to_open = data_folder / str(input("insert the file you would like to use with its extension"))f = open(file_to_open)如果您不想使用完整路径而只想使用位于脚本位置的本地文件,您只需要询问用户其名称并f = open(filename)直接打开它。注意:如果您想知道为什么有/infile_to_open而不是字符串连接,+ 这解释了原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python