Comment effacer un fichier texte en Python


Meilleure réponse

Comment effacer un fichier texte en Python?

Dans la plupart des langues, il devrait être suffisant douvrir le fichier en écriture puis de le fermer. Lidiome que jutiliserais est:

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

pass

Cela devrait laisser un fichier de longueur 0.

La question est, pourquoi voudriez-vous faire cela? Si vous voulez que le fichier disparaisse, supprimez-le (voir os.remove). Si vous avez lintention de lécraser, vous navez pas besoin de leffacer au préalable. Ouvrez-le pour écrire et écrire le nouveau contenu.

Réponse

Dans les anciennes versions de Python, la distinction entre les fichiers texte et binaire était liée à la façon dont Python traitait les séparateurs de ligne (la plupart du temps à la gestion MS-DOS / Windows des fichiers texte (utilisant des paires de caractères CR / LF pour la terminaison de ligne) et des anciens fichiers texte du système Macintosh (pré-MacOS X) (qui utilisaient CR, retour chariot (\ r) ou ASCII 0x0D) dans au lieu du LF (saut de ligne, \ n, ASCII 0x0A, qui est utilisé sous Unix, Linux et MacOS X).

Ceci était normalement détecté automatiquement par les interprètes Python2, et ne devait être dépassé quoccasionnellement. mais tous les fichiers pouvaient être traités comme de simples flux doctets (qui étaient interchangeables avec des caractères ASCII 8 bits) sous Python 2 et versions antérieures. Lindicateur / mode «b» sur open () pour traiter les fichiers comme des binaires ne concernait que les fins de ligne.

Avec Python 3, lhistoire est plus compliquée. Mais la simple prise est que les fichiers texte sont les fichiers par défaut et traités comme certains encodage dUnicode (UTF-8 ou US-ASCII par exemple). Pour gérer les fichiers en tant que binaire, il vous suffit dajouter le drapeau «b» à votre argument de mode lors de louverture du fichier. Mais maintenant, toutes les opérations sur ce fichier impliquent des objets octets plutôt que des chaînes. La lecture renvoie donc octets et les données doivent être converties en octets pour les appels à .write () méthode (et ainsi de suite).

Notez ces exemples:

# 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

Le mode peut également être w ou w + pour les fichiers texte inscriptibles (avec lecture / écriture facultative en ajoutant le +) ou a ou a + pour ajouter uniquement . Lindicateur b peut être ajouté à nimporte lequel de ceux des octets (binaires) plutôt que du texte.

Remarque: vous pouvez ouvrir des fichiers texte dans mode binaire. Cest juste que Python les traitera comme des flux doctets plutôt que du texte et vous devrez appeler explicitement des fonctions de conversion de chaîne sur le contenu (avec des arguments dencodage explicites) pour les utiliser comme des chaînes.

Voici un guide pour plus de détails: Tutoriel sur les chaînes Python 3.X par Mark Lutz

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *