python - Python tkinter:使用一个按钮选择一个txt文件,另一个按钮打开并读取内容到字符串
问题描述
我正在开发一个允许用户使用一个按钮选择文件的程序:
def select_file(self):
filename = tkinter.filedialog.askopenfilename(initialdir=".")
infile = open(filename, "r")
另一个按钮,标记为 count 出现,应该将 txt 文件读入字符串以搜索用户输入的内容:
def count_occurrences(self):
user_file = open(infile, "r")
txt_file = user_file.read()
# (omitted the code for counting occurrences for the sake of relevance)
我不确定问题出在哪个功能上,或者两者兼而有之。
单击“选择文件”按钮后,标签中会显示一个目录名称,但是当我在输入搜索文本后单击“计数出现次数”按钮时,出现错误:
"user_file = open(filename, "r") FileNotFoundError: [Errno 2] 没有这样的文件或目录:''
任何帮助将不胜感激,谢谢!
解决方案
我不确定您的项目代码是什么,但这是解决方案:
from tkinter import *
from tkinter import ttk, filedialog
#import io
class ReadFileApp:
def __init__(self, master):
self.label = ttk.Label(master, text = "How Read a File Content!")
self.label.grid(row = 0, column = 0, columnspan = 2)
ttk.Button(master, text = "Open File",
command = self.select_file).grid(row = 2, column = 0)
ttk.Button(master, text = "Print the Content",
command = self.count_occurrences).grid(row = 2, column = 1)
def select_file(self):
filename = filedialog.askopenfilename(initialdir=".")
self.infile = open(filename, "r")
#self.infile = io.TextIOWrapper(self.infile, encoding='utf8', newline='')
print(self.infile.name)
def count_occurrences(self):
with open(self.infile.name, 'r') as myfile:
txt_file=myfile.read().replace('\n', '')
print(txt_file)
def main():
main = Tk()
app = ReadFileApp(main)
main.mainloop()
if __name__ == "__main__": main()
这段代码应该可以正常工作。
你的问题是:
- 局部变量 infile 对其他函数不可见
- filedialog 函数返回一个 io.TextWrapper 类型,因此需要通过调用 infile.name 以字符串形式获取路径
推荐阅读
- go - go mod 子目录结构
- python - GUI 未出现在桌面上
- excel - 在用户窗体中检测动态对象上的鼠标按下事件
- typescript - 类型不可分配给类型 T
- python - SQLAlchemy 自引用多对一关系:示例
- r - 将单列拆分为多列
- java - 如何将文件中的行添加到 Line 对象的 Arraylist?
- git - Git clone 不会自动克隆子模块,导致 heroku 自动部署出现问题
- json - Eroor : 输入 '_InternalLinkedHashMap
' 不是类型 'List 的子类型 ' 在类型转换中 - python - 限制输入的集合理解的大小