Python: como criar arquivo com nome digitado em Entry (Tkinter)

Não estou conseguindo criar um nome para o arquivo que está em “open”.
Eu preciso que, ao clicar no botão o nome do arquivo que está no caminho seja renomeado pelo que digitei na entrada.
Eu criei esse código com base em um código maior que estou desenvolvendo. No código maior tudo está funcional, mas essa parte aí que não consigo resolver.

from tkinter import *

def crie():
    open('/caminho/'+entrada.get(), '.txt', 'a')
pai = Tk()
pai.geometry('220x100')
entrada = Entry(pai)
entrada.place(x=10, y=10, width=200, height=30)
botao = Button(pai, text='Criar', command=crie)
botao.place(x=60, y=50, width=100, height=30)
pai.mainloop()```

O código funciona aqui trocando '/caminho/'+entrada.get(), '.txt' por '/caminho/'+entrada.get()+'.txt').

O 'a' aí está sendo interpretado como um terceiro parâmetro para o open(), que você provavelmente não quer utilizar.

2 curtidas

Obrigadão!!!

Para facilitar sua vida no futuro, se você estiver usando uma versão recente do Python (3.6+), eu te aconselho a usar f-strings:

# em vez de    
open('/caminho/'+entrada.get(), '.txt', 'a')

# use
open(f'/caminho/{entrada.get()}.txt', 'a')

E sempre que for viável, prefira gestores de contexto:

# em vez de
file = open(f'/caminho/{entrada.get()}.txt', 'a')
...
try:
    file.write("blablabla")
except Exception as e:
    print(f"Xiii, olha o erro ai: {e}")
finally:
    file.close()

# use 
with open(f'/caminho/{entrada.get()}.txt', 'a') as file:
    file.write("blablabla")

Tente também dar preferência a bibliotecas mais modernas para manipular arquivos, como pathlib. Se você precisa renomear um arquivo:

from pathlib import Path
Path(f'/caminho/{entrada.get()}.txt').rename("novo/caminho.txt")
4 curtidas

Este tópico foi fechado automaticamente 3 dias depois da última resposta. Novas respostas não são mais permitidas.