Como limpar um arquivo de texto em Python


Melhor resposta

Como você limpa um arquivo de texto em Python?

Na maioria dos idiomas, deve ser suficiente abrir o arquivo para gravação e fechá-lo. O idioma que eu usaria é:

with open(theFile, “w”) as fp:

pass

Isso deve deixar para trás um arquivo de comprimento 0.

A questão é, por que você faria isso? Se você quiser que o arquivo desapareça, exclua-o (consulte os.remove). Se você pretende sobrescrevê-lo, não precisa limpá-lo primeiro. Abra-o para escrever e escrever o novo conteúdo.

Resposta

Nas versões antigas do Python, a distinção entre arquivos de texto e binários tinha a ver com a forma como o Python tratava os separadores de linha (principalmente apenas relevantes para MS-DOS / Windows manuseio de arquivos de texto (usando pares de caracteres CR / LF para terminação de linha) e arquivos de texto antigos do sistema Macintosh (pré-MacOS X) (que usavam CR, retorno de carro (\ r) ou ASCII 0x0D) em em vez do LF (alimentação de linha, \ n, ASCII 0x0A, que é usado em Unix, Linux e MacOS X).

Isso era normalmente detectado automaticamente por interpretadores Python2 e apenas ocasionalmente precisava ser substituído- montado. Mas todos os arquivos podem ser tratados como fluxos simples de bytes (que são intercambiáveis ​​com caracteres ASCII de 8 bits) no Python 2 e anteriores. A sinalização / modo “b” em open () para tratar arquivos como binários era apenas sobre finais de linha.

Com o Python 3, a história é mais complicada. Mas a ideia mais simples é que os arquivos de texto são o padrão e tratados como alguns codificação de Unicode (UTF-8 ou US-ASCII por exemplo). Para manipular arquivos como binários, você ainda precisa adicionar o sinalizador “b” ao seu argumento de modo ao abrir o arquivo. Mas agora todas as operações naquele arquivo envolvem objetos bytes em vez de strings. Portanto, as leituras retornam bytes e os dados devem ser convertidos como bytes para chamadas ao .write () método (e assim por diante).

Observe estes exemplos:

# Default:

textfile = open(‘somefile.txt’)

## read-only, text, encoding depends on platform by likely UTF-8 or US-ASCII

# Binary:

data = open(‘somedata.bin’, ‘rb’)

## read-only, bytes() data

O modo também pode ser w ou w + para arquivos de texto graváveis (com leitura / gravação opcional adicionando +) ou a ou a + para anexar apenas . O sinalizador b pode ser adicionado a qualquer um daqueles para bytes (binário) em vez de texto.

Observação: você pode abrir arquivos de texto em modo binário. Acontece que o Python os tratará como fluxos de bytes em vez de texto e você terá que chamar explicitamente as funções de conversão de string no conteúdo (com argumentos de codificação explícitos) para usá-los como strings.

Aqui está um guia para mais detalhes: Python 3.X Strings Tutorial de Mark Lutz

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *