如何读取 save.txt 文件并将其设置为标签
Posted
技术标签:
【中文标题】如何读取 save.txt 文件并将其设置为标签【英文标题】:How to read save.txt file and set it to label 【发布时间】:2020-11-21 09:40:38 【问题描述】:(我正在使用 tkinter 和 pytube 制作 gui 应用程序,它会将您的 youtube 视频下载到您所在的目录。)
你好,我正在用python制作我自己的应用程序,但这并不容易。我想不出解决办法。我希望我的应用程序进行保存。每次我选择一个目录时,它都会写入 save.txt 文件,但是当我启动应用程序时,我不知道如何将文件加载到显示当前目录的标签中。我也想更改ytbvideo.download(path)
。我想读取我的 save.txt 文件而不是路径。在我的 saves.txt 文件中只有目录。例如,saves.txt 现在是 C:/Python/VideoDownloader
,所以如果应用程序读取了 save.txt,我猜这应该不是问题。这是我的代码,它工作正常,所以唯一的问题是,我不知道要添加什么。 这是我的代码:
import os
from tkinter import Text, Label, Tk, Entry, StringVar, Button
from tkinter import filedialog
import tkinter as tk
root= Tk()
root.geometry('600x400')
root.title('Youtube Video Downloader')
root.configure(bg='gray')
Label_1=Label(root,text="Youtube video downloader", font=("bold",20), bg='gray')
Label_1.place(x=150,y=10)
Label_2=Label(root, text="Paste the link here", font=(10), bg='gray')
Label_2.place(x=240, y=75)
mylink=StringVar()
pastelink=Entry(root, width=60, textvariable=mylink)
pastelink.place(x=140, y=100)
def chooseDir():
global path
path = filedialog.askdirectory(title="Choose a download directory")
tk.Label(root, text=path, bg='gray').place(x=240,y=300)
saves()
def downloadVideo():
videoLink=str(mylink.get())
ytbvideo=YouTube(videoLink).streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first()
ytbvideo.download(path)
def saves():
saves = open('data.txt', 'w')
saves.write(path)
def quitApp():
root.destroy()
Button(root,text="Download video", width=20, bg='black',fg="white", command=downloadVideo).place(x=240, y=130)
Button(root,text="Choose location", width=20, bg='black',fg="white", command=chooseDir).place(x=240, y=160)
Label_3=Label(root, text="Curent location: ", font=("bold"), bg='gray')
Label_3.place(x=250, y=245)
Label_3=Label(root, text="by yakubiq", font=("bold"), bg='gray')
Label_3.place(x=0, y=375)
Button(root,text="Quit", width=20, bg='black', fg='white', command=quitApp).place(x=445, y=370)
root.mainloop()
【问题讨论】:
【参考方案1】:您必须在阅读模式下打开 save.txt,如下所示:
savesReader = open("data.txt", 'r')
然后您可以使用 savesReader.read() 从“data.txt”文件中读取。
【讨论】:
@JohnyPro 是的,但是每次更改目录时我都无法编辑该文件 @JohnyPro 我可以那样做吗?def saves(): saves = open('data.txt', 'w') saves.write(path) saves = open('data.txt', 'r') data = saves.read()
好吧,如果你想同时读取和写入文件,你可以使用open("data.txt", 'w+')
而不是open("data.txt", 'r')
@JohnyPro 但仍然无法正常工作,当我启动应用程序时目录不显示def chooseDir(): global path path = filedialog.askdirectory(title="Choose a download directory") tk.Label(root, text=data, bg='gray').place(x=240,y=300) saves() def downloadVideo(): videoLink=str(mylink.get()) ytbvideo=YouTube(videoLink).streams.filter(progressive=True, file_extension='mp4').order_by('resolution').desc().first() ytbvideo.download(data) def saves(): saves = open('data.txt', 'w+') global data data = saves.read()
@JohnyPro 这是错误,当我想选择目录时,但在开始时,当它应该将标签从无更改为 data.txt 中的目录时,没有任何错误。 Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1702, in __call__ return self.func(*args) File "C:\Python\VideoDownloader\VideoDownloader.py", line 36, in chooseDir tk.Label(root, text=data, bg='gray').place(x=240,y=300) NameError: name 'data' is not defined
【参考方案2】:
这样做:
var=open('[file directory]', 'r')
myvar= var.readlines()
tklabel=Label(root, text=f"myvar", font=(10), bg='gray')
var.close()
【讨论】:
以上是关于如何读取 save.txt 文件并将其设置为标签的主要内容,如果未能解决你的问题,请参考以下文章
如何从单个文件中读取不同的模式 json 对象并将其保存到表中