Expandindo o Til pelo Diretório Inicial do Usuário em Python
Dica publicada em Python / Manipulação de Arquivos
Expandindo o Til pelo Diretório Inicial do Usuário em Python
Em algumas situações, alguns usuários ou programadores podem preferir manipular arquivos que estão presentes em algum local no diretório HOME. Nesse cenário, o usuário criará um código escrevendo a localização exata do arquivo no diretório no seu código em Python, conforme o exemplo a seguir:
É um exemplo bem simplificado mesmo, mas já dá para se ter uma ideia de onde queremos chegar. Esse código é 100% funcional, mas tem um problema. Esse código vai funcionar perfeitamente para quem criou o código, mas não para outro usuário, uma vez que esse código vai precisar de adaptação para o diretório de outro usuário e isso significa mais trabalho de manutenção.
Então, vamos tentar da seguinte forma:
Ao executar esse código, ele deve funcionar perfeitamente e:
Traceback (most recent call last):
File "/home/mauricio/example.py", line 4, in < module>
arq = open(file)
IOError: [Errno 2] No such file or directory: '~/ztextscr'
OPA! Vamos ver o que aconteceu. O caractere "~" não foi expandido. Mas isso não é problema, para isso temos o módulo os.path. Podemos resolver isso usando a expanduser() presente nesse módulo da seguinte forma:
Aqui, eu printei a variável file só para mostrar que o local do arquivo realmente expandiu conforme esperado, como pode ser visto na imagem a seguir: Tem muitas funções que você pode usar no módulo os.path afim de facilitar o trabalho ao manipular arquivos e diretórios, podendo se acessadas no própria documentação do Python: os.path - Common pathname manipulations - Python 3.9.6 ...
Espero que eu tenha ajudado.
file = "/home/mauricio/ztextscr" arq = open(file) text = arq.read() print(text) arq.close()
É um exemplo bem simplificado mesmo, mas já dá para se ter uma ideia de onde queremos chegar. Esse código é 100% funcional, mas tem um problema. Esse código vai funcionar perfeitamente para quem criou o código, mas não para outro usuário, uma vez que esse código vai precisar de adaptação para o diretório de outro usuário e isso significa mais trabalho de manutenção.
Então, vamos tentar da seguinte forma:
file = "~/ztextscr" arq = open(file) text = arq.read() print(text) arq.close()
Ao executar esse código, ele deve funcionar perfeitamente e:
Traceback (most recent call last):
File "/home/mauricio/example.py", line 4, in < module>
arq = open(file)
IOError: [Errno 2] No such file or directory: '~/ztextscr'
OPA! Vamos ver o que aconteceu. O caractere "~" não foi expandido. Mas isso não é problema, para isso temos o módulo os.path. Podemos resolver isso usando a expanduser() presente nesse módulo da seguinte forma:
import os.path
file = os.path.expanduser("~/ztextscr")
arq = open(file)
text = arq.read()
print(text)
# print file variable
print("\n-------------------------\n")
print(file)
arq.close()
Aqui, eu printei a variável file só para mostrar que o local do arquivo realmente expandiu conforme esperado, como pode ser visto na imagem a seguir: Tem muitas funções que você pode usar no módulo os.path afim de facilitar o trabalho ao manipular arquivos e diretórios, podendo se acessadas no própria documentação do Python: os.path - Common pathname manipulations - Python 3.9.6 ...
Espero que eu tenha ajudado.