Quelle est la meilleure façon d'ouvrir un fichier en lecture / écriture s'il existe, ou si ce n'est pas le cas, puis de le créer et de l'ouvrir en lecture / écriture? D'après ce que j'ai lu, file = open('myfile.dat', 'rw')
devrait faire cela, non?
Cela ne fonctionne pas pour moi (Python 2.6.2) et je me demande si c'est un problème de version, ou pas censé fonctionner comme ça ou quoi.
L'essentiel est, j'ai juste besoin d'une solution au problème. Je suis curieux de connaître les autres trucs, mais tout ce dont j'ai besoin est une belle façon de faire la partie d'ouverture.
Le répertoire englobant était accessible en écriture par l'utilisateur et le groupe, pas par les autres (je suis sur un système Linux ... donc les autorisations 775 en d'autres termes), et l'erreur exacte était:
IOError: aucun fichier ou répertoire de ce type.
la source
file
existent.Réponses:
Vous devez utiliser
open
avec lew+
mode:la source
w
tronque le fichier existant. docs: Modes'r+'
,'w+'
et'a+'
ouvrez le fichier pour la mise à jour (notez que'w+'
tronque le fichier).open('myfile.dat', 'w')
suffit alors.L'avantage de l'approche suivante est que le fichier est correctement fermé à la fin du bloc, même si une exception est levée en cours de route. C'est équivalent à
try-finally
, mais beaucoup plus court.La méthode seek () définit la position actuelle du fichier.
la source
filename
?La bonne pratique consiste à utiliser les éléments suivants:
la source
Changer "rw" en "w +"
Ou utilisez «a +» pour ajouter (sans effacer le contenu existant)
la source
r + signifie lecture / écriture
la source
Depuis python 3.4 , vous devez utiliser
pathlib
les fichiers « tactiles ».C'est une solution beaucoup plus élégante que celles proposées dans ce fil.
Même chose avec les répertoires:
la source
touch
met à jour la dernière heure modifiée lors de son utilisation.touch
sur la ligne de commande sous Linux, donc je suppose que c'est le comportement prévu.Ma réponse:
la source
exemple:
J'espère que ça aide. [Pour info, j'utilise la version 3.6.2 de python]
la source
open('myfile.dat', 'a')
fonctionne pour moi, très bien.dans py3k, votre code génère
ValueError
:en python-2.6, il augmente
IOError
.la source
Utilisation:
Remarque: Les fichiers doivent être fermés après les avoir ouverts, et le gestionnaire de contexte with est un bon moyen de laisser Python s'en occuper pour vous.
la source
Que voulez-vous faire avec le fichier? Uniquement écrire dessus ou lire et écrire?
'w'
,'a'
permettra l'écriture et créera le fichier s'il n'existe pas.Si vous devez lire à partir d'un fichier, le fichier doit exister avant de l'ouvrir. Vous pouvez tester son existence avant de l'ouvrir ou utiliser un try / except.
la source
Je pense que
r+
nonrw
. Je suis juste un débutant, et c'est ce que j'ai vu dans la documentation.la source
Mettez w + pour écrire le fichier, tronquer s'il existe, r + pour lire le fichier, en créer un s'il n'existe pas mais pas écrire (et retourner null) ou un + pour créer un nouveau fichier ou l'ajouter à un existant.
la source
Vous voulez donc écrire des données dans un fichier, mais seulement si elles n'existent pas déjà?.
Ce problème est facilement résolu en utilisant le mode x peu connu pour ouvrir () au lieu du mode w habituel. Par exemple:
Si le fichier est en mode binaire, utilisez le mode xb au lieu de xt.
la source
Si vous voulez l'ouvrir pour lire et écrire, je suppose que vous ne voulez pas le tronquer lorsque vous l'ouvrez et que vous voulez pouvoir lire le fichier juste après l'avoir ouvert. Voici donc la solution que j'utilise:
la source
peut-être que cela aidera
importez d'abord le module os dans votre fichier py
puis créez une variable nommée save_file et définissez-la sur le fichier que vous souhaitez faire html ou txt dans ce cas, un fichier txt
puis définissez une fonction qui utilisera la méthode de fichier os.path.is pour vérifier si le fichier existe et sinon il créera un fichier
et enfin appeler la fonction
la source
la source