# Manipulação de Arquivos em Python
A manipulação de arquivos em [[Linguagem de programação Python|Python]] é uma tarefa fundamental, e a abordagem recomendada para garantir o gerenciamento adequado de recursos é o uso da instrução `with` em conjunto com a função `open()`. Esta prática assegura que o arquivo seja fechado automaticamente, mesmo que ocorram erros durante o processamento.
## Modos de Abertura de Arquivos
A função `open()` aceita um segundo argumento que define o modo de operação do arquivo. Os modos mais comuns são:
* **`'w'` (write):** Abre o arquivo para escrita. Se o arquivo já existir, seu conteúdo será **sobrescrito**. Se não existir, será criado.
* **`'r'` (read):** Abre o arquivo para leitura. Este é o modo padrão se nenhum modo for especificado. Ocorre um erro se o arquivo não existir.
* **`'a'` (append):** Abre o arquivo para anexar dados ao final do conteúdo existente. Se o arquivo não existir, ele será criado.
* **`'x'` (exclusive creation):** Cria um novo arquivo e o abre para escrita. Se o arquivo já existir, a operação falhará.
* **`'b'` (binary):** Abre o arquivo em modo binário. Deve ser combinado com outros modos (ex: `'rb'`, `'wb'`).
* **`'t'` (text):** Abre o arquivo em modo texto. Este é o modo padrão e pode ser combinado com outros modos (ex: `'rt'`, `'wt'`).
* **`'+'` (updating):** Abre um arquivo para atualização (leitura e escrita). Deve ser combinado com outros modos (ex: `'r+'`, `'w+'`, `'a+'`).
## Exemplo Prático: Adicionando Nomes a um Arquivo
O exemplo a seguir demonstra como solicitar um nome ao usuário e adicioná-lo a um arquivo chamado `names.txt`. O modo `'a'` garante que cada novo nome seja adicionado ao final do arquivo, sem apagar os anteriores.
```python
name = input("Qual é o seu nome? ")
with open("names.txt", "a") as file:
file.write(f"{name}\n")
```
Este código:
1. Solicita a entrada do usuário e a armazena na variável `name`.
2. Abre o arquivo `names.txt` no modo de anexar (`'a'`).
3. Escreve o nome fornecido, seguido por um caractere de nova linha (`\n`), no arquivo.
4. O bloco `with` garante que o arquivo seja fechado automaticamente após a escrita.
## Referência
* [Documentação oficial da função `open()` do Python](https://docs.python.org/3/library/functions.html#open)