Python >> Tutoriel Python >  >> Python

Python One-Liner :écrire une chaîne dans un fichier

Problème :Étant donné une chaîne et un nom de fichier. Comment écrire la chaîne dans le fichier avec le nom de fichier en utilisant une seule ligne de code Python ?

Exemple :Vous avez le nom de fichier 'hello.txt' et vous voulez écrire la chaîne 'hello world!' dans le fichier.

hi = 'hello world!'
file = 'hello.txt'

# Write hi in file

'''
# File: 'hello.txt':
hello world!
'''

Comment y parvenir ? Dans ce didacticiel, vous apprendrez quatre façons de le faire en une seule ligne de code !

Voici un aperçu rapide dans notre shell Python interactif :

Exercice :Exécutez le code et vérifiez le fichier 'hello.txt' . Combien de 'hello worlds!' y en a-t-il dans le dossier ? Modifiez le code afin qu'un seul 'hello world!' est dans le fichier !

Méthode 1 :Utilisation de l'instruction "Avec"

Le moyen le plus simple consiste à utiliser le with déclaration sur une seule ligne (sans saut de ligne).

hi = 'hello world!'
file = 'hello.txt'

# Method 1: 'with' statement
with open(file, 'a') as f: f.write(hi)

'''
# File: 'hello.txt':
hello world!
'''

Vous utilisez les étapes suivantes :

  • Le with environnement garantit qu'il n'y a pas d'effets secondaires tels que des fichiers ouverts.
  • Le open(file, 'a') l'instruction ouvre le fichier avec le nom de fichier file et ajoute le texte que vous écrivez au contenu du fichier. Vous pouvez également utiliser open(file, 'w') pour écraser le contenu du fichier existant.
  • Le nouveau fichier renvoyé par le open() l'instruction est nommée f .
  • Dans le with corps, vous utilisez l'instruction f.write(string) écrire string dans le fichier f . Dans notre exemple, la chaîne est 'hello world!' .

Bien sûr, une meilleure façon d'écrire ceci en deux lignes serait d'utiliser une indentation appropriée :

with open(file, 'a') as f:
    f.write(hi)

C'est la manière la plus connue d'écrire une chaîne dans un fichier. Le gros avantage est que vous n'avez pas à fermer le fichier—le with l'environnement le fait pour vous ! C'est pourquoi de nombreux codeurs considèrent qu'il s'agit de la méthode la plus Pythonique.

Mais pas si vite !

Méthode 2 :fonction print() avec un objet fichier

Chaque codeur Python connaît le print() fonction. Mais la plupart des codeurs Python ne savent pas que le print() la fonction a également un file facultatif dispute. Vous pouvez utiliser n'importe quel objet fichier comme file argument pour imprimer les résultats dans le fichier.

hi = 'hello world!'
file = 'hello.txt'

# Method 2: print() function
print(hi, file=open(file, 'a'))

Utilisation du print() La fonction est une manière belle, courte, facile à retenir et Pythonique d'écrire des chaînes dans un fichier !

La méthode est clairement la plus concise et je la recommande à tout codeur Python.

Il n'a qu'un seul inconvénient :vous devez fermer le fichier après l'avoir ouvert.

Eh bien, cela peut aussi être un avantage par rapport à l'instruction with. Supposons que vous ayez un gros fichier de code et que vous deviez écrire des éléments dans un fichier au début et à la fin du code. Utilisation du with signifie que vous devez ouvrir le fichier deux fois (car il est clairement inférieur d'écrire tout votre code Python dans un seul corps). Dans ce cas, il serait encore mieux d'ouvrir le fichier une fois et de le passer dans un print() appel de fonction au début et à la fin.

À proprement parler, vous n'avez même pas besoin de fermer le dossier si vous savez ce que vous faites. Python ferme automatiquement tous les fichiers si le script se termine. Je sais que de nombreux codeurs Python sont très rigoureux à ce sujet - ils protesteraient contre cette politique "paresseuse" de ne pas fermer un fichier. À mon avis, vous pouvez et devez tirer parti des connaissances sur les détails d'implémentation d'un langage Python. Si ce serait "unpythonic", vous ne devriez pas non plus utiliser de conversions booléennes implicites comme if []: print('empty') car ils nécessitent également une connaissance approfondie des détails d'implémentation de Python.

(Je connais les arguments standard pour fermer des fichiers, mais je ne pense pas que ce soient des arguments très « durs » pour le faire :ils sont simplement « sûrs » et faciles à recommander. La plupart des personnes qui les déclarent ne ferment pas fichiers eux-mêmes tout le temps.)

Méthode 3 :Déclaration d'écriture de fichier multiligne avec point-virgule

Bien sûr, vous pouvez également utiliser une simple instruction multiligne pour tout entasser dans une seule ligne de code Python :

hi = 'hello world!'
file = 'hello.txt'

# Method 3: multi-line statement
f = open(file, 'a'); f.write(hi); f.close()

L'instruction se compose de trois opérations, séparées par le point-virgule :

  • open(file, 'a') :Ouvre et crée un objet fichier en mode ajout.
  • f.write(hi) :Écrit la chaîne 'hello world!' dans le fichier.
  • f.close() :Ferme l'objet fichier.

Si vous ne vous souciez pas de fermer des fichiers (parce que vous savez ce que vous faites), vous pouvez simplifier cela comme suit :

Méthode 4 :enchaîner open() et write()

Cette méthode n'est recommandée que si vous êtes sûr de ne pas utiliser le fichier dans votre code une seconde fois (et même dans ce cas, vous pouvez vous en tirer car vous ne pouvez même pas utiliser le premier objet fichier une seconde fois car vous l'avez jeté sa référence) :

hi = 'hello world!'
file = 'hello.txt'

# Method 4: open() and write()
open(file, 'a').write(hi)

Vous créez l'objet fichier et y écrivez en utilisant une seule ligne. C'est le moyen le plus court et le plus concis d'écrire des choses dans un fichier. Oui, vous ne fermez pas le fichier. Mais le ramasse-miettes de Python va probablement jeter l'objet fichier de toute façon car il n'y a aucune référence pointant vers l'objet fichier.

Si vous aimez les one-liners et que vous avez apprécié ce tutoriel, jetez un œil à mon nouveau livre :

Livre Python One-Liners :maîtrisez d'abord la ligne unique !

Les programmeurs Python amélioreront leurs compétences en informatique avec ces lignes utiles.

Python One-Liners vous apprendra à lire et à écrire des « lignes simples » :des déclarations concises de fonctionnalités utiles regroupées dans une seule ligne de code. Vous apprendrez à décompresser et à comprendre systématiquement n'importe quelle ligne de code Python, et à écrire du Python éloquent et puissamment compressé comme un expert.

Les cinq chapitres du livre couvrent (1) les trucs et astuces, (2) les expressions régulières, (3) l'apprentissage automatique, (4) les principaux sujets de science des données et (5) les algorithmes utiles.

Des explications détaillées des one-liners introduisent les concepts clés de l'informatique etdéveloppez vos compétences en matière de codage et d'analyse . Vous découvrirez les fonctionnalités Python avancées telles que la compréhension de liste , tranchage , fonctions lambda , expressions régulières , carte et réduire fonctions et affectations de tranches .

Vous apprendrez également à :

  • Exploiter les structures de données pour résoudre des problèmes réels , comme utiliser l'indexation booléenne pour trouver des villes avec une pollution supérieure à la moyenne
  • Utiliser les bases de NumPy comme tableau , forme , axe , tapez , diffusion , indexation avancée , tranchage , tri , recherche , agrégation , et statistiques
  • Calculer des statistiques de base de tableaux de données multidimensionnels et les algorithmes K-Means pour l'apprentissage non supervisé
  • Créer davantage d'expressions régulières avancées en utilisant le regroupement et groupes nommés , anticipations négatives , caractères échappés , espaces blancs, jeux de caractères (et jeux de caractères négatifs ) et opérateurs gourmands/non gourmands
  • Comprendre un large éventail de sujets informatiques , y compris les anagrammes , palindromes , surensembles , permutations , factorielles , nombres premiers , Fibonacci chiffres, obscurcissement , recherche , et tri algorithmique

À la fin du livre, vous saurez comment écrire Python dans sa forme la plus raffinée , et créez de belles pièces concises d'"art Python" en une seule ligne.

Obtenez vos Python One-Liners sur Amazon !!