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