Итак, я хочу создать приложение, которое принимает файлы из одного каталога, а затем заменяет файл в другом каталоге этим файлом. Я пытался выяснить, как взять строковые переменные и отобразить их в виде строки пути. Я знаю, что os.replace()
не принимает строковые переменные, поэтому я попытался создать переменную, которая принимает строковую переменную и превращает ее в строку.
import tkinter as tk
from tkinter import filedialog, ttk
from tkinter import *
import os
root = Tk()
root.resizable(False, False)
root.geometry("600x600")
def search1():
global file1_path
filename1 = filedialog.askopenfilename()
file1_path.set(filename1)
print(filename1)
def search2():
global file2_path
filename2 = filedialog.askopenfilename()
file2_path.set(filename2)
print(filename2)
def browse_button():
global folder_path
filename = filedialog.askdirectory()
folder_path.set(filename)
print(filename)
def replacefile():
os.replace(f'{folder}/game/scripts.rpa', f'{file1}')
os.replace(f'{folder}/game/images.rpa', f'{file2}')
folder_path = StringVar()
file1_path = StringVar()
file2_path = StringVar()
file1 = str(file1_path)
file2 = str(file2_path)
folder = str(folder_path)
button1 = ttk.Button(text="Browse", command=search1)
button1.place(relx = 1.1, rely = 1.01)
button1.place(relx = .6, rely = .5)
button3 = ttk.Button(text="Browse", command=search2)
button3.place(relx = 1.1, rely = 1.01)
button3.place(relx = .6, rely = .54)
button4 = ttk.Button(text="Browse", command=browse_button)
button4.place(relx = 1.1, rely = 1.01)
button4.place(relx = .6, rely = .58)
button2 = ttk.Button(text="Replace", command=replacefile)
button2.place(relx = 0.01, rely = 1.01)
button2.place(relx = 0.01, rely = .8)
mainloop()
Эта ошибка возникает в консоли, когда я пытаюсь для замены:
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'PY_VAR0/game/scripts.rpa' -> 'PY_VAR1'
Python видит это как переменную, а не часть строки. Я немного новичок в python, поэтому я понятия не имею, почему это происходит. Если кто-нибудь знает, как я могу это исправить, это очень ценится.