为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2021-12-08 14:42:47
我有一个程序可以连接文本中用星号分隔的法语单词。因为我想让这个程序被不同的用户使用,所以我想在程序中插入一行,要求用户输入文本文件的路径或者简单地输入文本的名称……怎么做?只使用函数“输入”?我不知道......有没有一种优雅的方式让用户运行程序?该程序如下:import nltkfrom nltk.tokenize import word_tokenizeimport rewith 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:           continuefor i, w in enumerate(l):    if w == "*":        l.remove(l[i-1])    else:        continuefor i, w in enumerate(l):    if w == "$":        l.remove(l[i+1])    else:        continuetext=' '.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:        continuefinal_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')
查看完整描述

2 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

您可以按照自己喜欢的方式进行操作,但让用户写出文件的完整路径既乏味又容易出错。你可以做的是有一个“监视文件夹”。这是您的脚本已经知道的文件夹,甚至可能与您的脚本位于同一文件夹中。


一个小例子:


import os

import 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 off

our_watched_folder = f'{script_directory}/watch_folder'

print(our_watched_folder)


# Let's see if a user dropped a new file in our folder

print("Files in watch folder")

for file in os.listdir(our_watched_folder):

    print(file)

输出:


C:/your_script_folder/

C:/your_script_folder/watch_folder

Files in watch folder

a_new_text_file.txt

some_old_textfile1.txt

some_old_textfile2.txt


查看完整回答
反对 回复 2021-12-08
?
Qyouu

TA贡献1786条经验 获得超11个赞

from pathlib import Path

data_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而不是字符串连接,+ 这解释了原因。


查看完整回答
反对 回复 2021-12-08
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信