我正在编写一个Python模块,它将读取和分析专用软件程序的输入文件。我希望用户能够分析他们选择的任何输入文件。到目前为止,我已经尝试了两种方法来获取文件名:
方法1:
filename = input('File to be analyzed: ')
Pro:最简单的方法
骗局:用户每次都难以输入长文件路径
方法2:
将名为path.txt
的文件放在与Python模块相同的目录中,用户可以在那里存储文件名。
import os
pathtxt_dir = os.path.dirname(os.path.realpath(__file__))
pathtxt_fullpath = os.path.join(pathtxt_dir, 'path.txt')
try:
fo = open(pathtxt_fullpath, 'r')
lines = fo.readlines()
fo.close()
except IOError:
raise Exception('path.txt cannot be opened')
filename = lines[0].rstrip().lstrip() # input file
Pro:同事熟悉这种方法,因为它与之前使用过的程序类似。
Con:这似乎是一种不必要的复杂方式来获取用户输入
问题:
是否有规范的Python方法来获取长文件和重复的用户输入,例如此文件名?还有,我还没有考虑过另一种有用的方法吗?
答案 0 :(得分:0)
您可以使用tkinter打开GUI来选择文件。这样他们每次都不必打字。
import tkinter as tk
from tkinter import filedialog as fd
import os
def getfile(title='Choose files', sformat='.*'):
root = tk.Tk()
root.lift()
# d and f are whatever default directory and filename
try:
f = fd.askopenfilename(parent=root, title=title, filetypes=[('', sformat)], initialdir=d, initialfile=f)
root.withdraw()
return f
except:
# print(title + ': error - no file exists')
return ''