Помогите исправить ошибку:Процесс не может получить доступ к файлу, так как этот файл занят другим процессом
я хотел создать что-то по типу builder на python у меня была такая задумка: создать текстовый документ в него вписать код после чего переиминовать файл txt в py и ввести в cmd с помощью subprocess команду cd и директорию файла после чего командой pyinstaller откомпелировать файл в exe но когда я запустил builder возникла вот такая ошибка
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\epicb\AppData\Local\Programs\Python\Python38\lib\tkinter\__init__.py", line 1883, in
__call__
return self.func(*args)
File "C:\Users\epicb\Desktop\Sherat\Sherik.py", line 243, in <lambda>
b = tk.Button(self, text='build', command=lambda: buildsettings(self))
File "C:\Users\epicb\Desktop\Sherat\Sherik.py", line 191, in buildsettings
os.rename("C://Sherik/" + name + ".txt", "C://Sherik" + name + ".py")
PermissionError: [WinError 32] Процесс не может получить доступ к файлу, так как этот файл занят
другим процессом: 'C://Sherik/name.txt' -> 'C://Sherikname.py'
вот код отвечающий за создание билда:
file = open("C:\Sherik/" + name + ".txt", "w", encoding="utf-8")
file.write("import subprocess\n")
file.write("")
file.write("try:\n")
file.write("text = subprocess.check_output(\n")
file.write("['ipconfig'],\n")
file.write("stderr=subprocess.STDOUT,\n")
file.write(").decode('cp866')\n")
file.write("except subprocess.CalledProcessError as e:\n")
file.write("text = str(e)\n")
file.write("text = text.splitlines()[18][39:]")
os.rename("C://Sherik/" + name + ".txt", "C://Sherik" + name + ".py")
Ответы (2 шт):
Автор решения: Jack_oS
→ Ссылка
Не закрыт файл после записи. Сделайте:
file.close()
И пользуйтесь менеджерами контекста:
with open(path, 'w') as f_obj:
f_obj.write(some_data)