Quelle est la différence entre io.open() et de l'os.open() de Python?
J'ai réalisé que la open()
fonction que j'ai utilisé était un pseudonyme de io.open()
et que l'importation *
de os
serait faire de l'ombre que.
Quelle est la différence entre l'ouverture des fichiers par le biais de la io
module et os
module?
- À partir de la Python docs: Cette fonction [
os.open
] est destiné faible niveau I/O. Pour l'utilisation normale, l'utilisation de la fonction intégréeopen()
, qui retourne un objet de fichier avecread()
etwprite()
méthodes (et beaucoup plus). Pour envelopper un descripteur de fichier dans un fichier objet, utilisezfdopen()
. - JAMAIS
import *
. - Cette question devrait être étiquetée en tant que python3. En python2
open()
etio.open()
sont différents.
InformationsquelleAutor Gio Borje | 2011-08-28
Vous devez vous connecter pour publier un commentaire.
io.open()
est le préféré, de plus haut niveau de l'interface de fichier I/O. Elle enveloppe l'OS au niveau de descripteur de fichier dans un objet que vous pouvez utiliser pour accéder au fichier dans une Pythonic manière.os.open()
est juste un wrapper pour le niveau inférieur POSIX syscall. Il prend moins symbolique (et plus POSIX-y) arguments, et renvoie le descripteur de fichier (un nombre) qui représente le fichier ouvert. Il ne pas retour d'un fichier objet, la valeur retournée sera pasread()
ouwrite()
méthodes.De la
os.open()
de la documentation:os.open
voir: stackoverflow.com/a/45368120/2705757 (fichier de configuration de l'autorisation lors de la création, sans l'aide deos.chmod
)Absolument tout:
os.open()
prend un nom de fichier comme une chaîne de caractères, la mode fichier comme un bit à bit du masque d'attributs, et un argument optionnel qui décrit la permission de fichier bits, et renvoie un descripteur de fichier comme un entier.io.open()
prend un nom de fichier comme une chaîne de caractères ou un descripteur de fichier comme un entier, le mode fichier comme une chaîne de caractères, et arguments optionnels qui décrivent l'encodage du fichier, mise en mémoire tampon utilisée, la façon dont les erreurs de codage et de retours à la ligne sont traitées, et si le sous-jacent FD est fermé lorsque le fichier est fermé, et renvoie quelque descendant deio.IOBase
.os.open
est très similaire àopen()
en C sous Unix. Vous avez peu de chances de vouloir l'utiliser, sauf si vous êtes en train de faire quelque chose de beaucoup plus bas niveau. Il vous donne une réelle descripteur de fichier (comme dans un certain nombre, et non un objet).io.open
est votre base de Pythonopen()
et ce que vous voulez utiliser à peu près tout le temps.os.
à lastdio
fonctions, et de changer l'extension en.py
, le code s'exécute sans erreur?os.open()
méthode ouvre le fichier et définir des indicateurs différents selon les drapeaux et peut-être son mode selon la mode.Le mode par défaut est 0777 (octal), et le courant de démasquer la valeur est d'abord masquée.
Cette méthode renvoie le descripteur de fichier pour le fichier nouvellement ouvert.
Tout,
io.open()
méthode ouvre un fichier, dans le mode spécifié dans la chaîne de mode. Elle renvoie un nouveau descripteur de fichier, ou, en cas d'erreur, le néant, plus un message d'erreur.Espère que cette aide
À ajouter à l'existant réponses:
open()
==io.open()
en Python 3 seulement. En Python 2, ils sont différents.Tout avec
open()
en Python on peut obtenir une facile-à-utilisation de l'objet fichier avec handyread()
etwrite()
méthodes, sur le niveau de l'OS, les fichiers sont accessibles à l'aide de descripteurs de fichiers (ou descripteurs de fichiers dans Windows). Ainsi,os.open()
doit être utilisé implicitement sous le capot. Je n'ai pas examiné le code source Python à cet égard, mais la documentation de laopener
paramètre a été ajouté pouropen()
en Python 3.3, dit:Donc
os.open()
est la valeur par défaut de l'ouverture àopen()
, et nous avons également la possibilité de spécifier un wrapper personnalisé autour d'elle si fichier les drapeaux ou en mode besoin d'être changé. Voir la la documentation pouropen()
pour un exemple d'une coutume de l'ouvreur, qui ouvre un fichier par rapport à un répertoire donné.De la base de données système et les développeurs d'applications utilisent généralement
open
au lieu defopen
que le premier fournit un contrôle plus précis sur quand, quoi et comment le contenu de la mémoire doit être écrit pour son magasin de sauvegarde (c'est à dire, fichier sur le disque).Dans Unix comme système d'exploitation,
open
est utilisé pour ouvrir un fichier régulier, prise de point de fin, l'appareil, le tuyau, etc. Un fichier positif numéro de descripteur est retourné pour chaqueopen
appel de fonction. Il fournit une API cohérente et cadre de vérifier pour la notification d'événement, etc sur une variété de ces objets.Cependant,
fopen
est un standard de la fonction C et qui est normalement utilisé pour ouvrir un fichier régulier et retourner unFILE
structure de données.fopen
, en fait, appelopen
finalement.fopen
est assez bon pour un usage normal que les développeurs n'ont pas besoin de s'inquiéter quand à rincer ou de synchronisation contenu de la mémoire sur le disque et n'ont pas besoin de notification d'événement.