Maison > Article > développement back-end > Explication détaillée sur la façon de lire et d'écrire des fichiers Python et de définir le codage des caractères des fichiers
Les opérations de lecture et d'écriture de fichiers sont une partie importante et couramment utilisée dans divers langages de programmation. Aujourd'hui, parlons en détail des opérations de lecture et d'écriture de fichiers de Python, ainsi que des points qui nécessitent une attention particulière.
Le code est le suivant :
f = open("d:\test.txt", "w")
Explication :
Le premier paramètre est le nom du fichier, y compris le chemin ;
Le deuxième paramètre est le mode ouvert
'r' : lecture seule (par défaut. Si le fichier n'existe pas, une erreur est générée)
'w' : écrire uniquement (créer automatiquement le fichier s'il n'existe pas)
'a' : ajouter à la fin du fichier
'r+' : lire et écrire
si nécessaire pour ouvrir en fichier binaire, vous devez ajouter le caractère "b" après le mode, tel que "rb", "wb", etc.
Taille du paramètre Indique le nombre de lectures et peut être omis. Si le paramètre size est omis, cela signifie lire tout le contenu du fichier.
f.readline() lit le contenu d'une ligne du fichier f.readlines() lit toutes les lignes du tableau [line1, line2,…lineN].
f = open('./pythontab.txt', 'r') content = f.read() print content
Cette méthode est souvent utilisée pour éviter de charger tout le contenu des fichiers en mémoire afin d'améliorer l'efficacité.
Écrivez une chaîne dans le fichier
f = open('./pythontab.txt', 'r+') f.write('Hello, Pythontab.com') f.close()
Remarque : si l'écriture se termine, vous pouvez ajouter "n" après la chaîne pour indiquer une nouvelle ligne, et enfin le fichier doit être fermé avec f.close(). Sinon, des exceptions peuvent survenir, en particulier dans les situations de concurrence élevée.
Après la lecture de f.read(), le pointeur de fichier atteint la fin du fichier. Si f.read() est à nouveau utilisé, il le fera. vous constaterez que ce qui est lu est un contenu vide. Si vous souhaitez relire l'intégralité du contenu, vous devez déplacer le pointeur de positionnement au début du fichier :
f.seek(0)
Le format de cette fonction est le suivant (l'unité est en octets) : f .seek(offset, from_what) from_what indique la position de départ de la lecture, et offset indique un déplacement d'une certaine distance par rapport à from_what. Par exemple, f.seek(10, 3) indique le positionnement au troisième caractère et le recul de 10 caractères.
Lorsque la valeur from_what est 0, elle indique le début du fichier. Elle peut également être omise. La valeur par défaut est 0, qui est le début du fichier. Un exemple complet est donné ci-dessous :
f = open('./pythontab.txt', 'r+') f.write('Hello, Pythontab.com') f.seek(5) # 定位到第6个byte f.read(1) f.seek (-3, 2) #定位到第2个字符并再向前移动3个字符 f.read(1)
Fermez le fichier pour libérer les ressources. Une fois l'opération sur le fichier terminée, n'oubliez pas de fermer le fichier f. .close(), qui peut libérer des ressources pour que d'autres programmes lisent et écrivent uniquement des fichiers au format d'encodage ASCII ou gbk, ce qui est relativement simple. La lecture et l'écriture sont les suivantes :
# coding=gbk f = open('./pythontab.txt','r') # r 指示文件打开模式,即只读 s1 = f.read() s2 = f.readline() s3 = f.readlines() #读出所有内容 f.close() f = open('./pythontab.txt','w') # w 写文件 11 f.write(s1) 12 f.writelines(s2) # 没有writeline 13 f.close()
fichiers unicode python Lecture et écriture :
# coding=gbk import codecs f = codecs.open('./pythontab.txt','a','utf-8') f.write(u'中文') s = '中文' f.write(s.decode('gbk')) f.close() f = codecs.open('./pythontab.txt','r','utf-8') s = f.readlines() f.close() for line in s: print line.encode('gbk')
Le fichier py est par défaut encodé en ASCII lorsque le chinois est. affiché, une conversion de l'ASCII vers le codage par défaut du système sera effectuée. À ce moment, une erreur se produit : SyntaxError : Caractère non-ASCII. Vous devez ajouter des instructions d'encodage dans la première ou la deuxième ligne du fichier de code :
# coding=utf-8 ##Stockage des caractères chinois en encodage utf-8
imprimer '中文' comme ci-dessus L'entrée de chaîne est directement traitée en fonction du codage du fichier de code. Si le codage Unicode est utilisé, il existe les deux méthodes suivantes :
s1 = u'Chinese' #u signifie utiliser le codage Unicode pour stocker les informations.
s2 = unicode('Chinese','gbk')
unicode est une fonction intégrée et le deuxième paramètre indique le format d'encodage de la chaîne source.
decode est une méthode dont toute chaîne dispose pour convertir la chaîne au format Unicode. Le paramètre indique le format d'encodage de la chaîne source.
encode est également une méthode dont dispose toute chaîne, convertissant la chaîne au format spécifié par le paramètre.
Utilisez u'Caractère chinois' pour construire un type unicode, sinon il construira un type str
L'encodage de str est lié au système environnement , généralement la valeur obtenue par sys.getfilesystemencoding()
, donc pour convertir d'unicode en str, vous devez utiliser la méthode encode
pour convertir de str en unicode, vous avez donc besoin pour utiliser décoder
, par exemple :
# coding=utf-8 #默认编码格式为utf-8 s = u'中文' #unicode编码的文字 print s.encode('utf-8') #转换成utf-8格式输出 print s #效果与上面相同,似乎默认直接转换为指定编码
u=u'unicode encoded text'
g=u.encode( 'gbk') #Convertir au format gbk
print g #Ceci est un code tronqué car l'environnement actuel est utf-8 et le texte encodé en gbk est tronqué
str=g.decode('gbk ').encode('utf-8') # Lire g au format d'encodage gbk (car il est encodé gbk) et le convertir au format utf-8 et le sortir
print str #Affichage normal du chinois
Méthode sûre :
s.decode('gbk','ignore').encode('utf-8') #Lire en encodage gbk (bien sûr, lire le texte au format d'encodage gbk) et ignorez le mauvais encodage et convertissez en utf- 8 Sortie d'encodage
Parce que le prototype de fonction de décodage est decode([encoding], [errors='strict']), vous pouvez utiliser le deuxième paramètre pour contrôler le stratégie de gestion des erreurs. Le paramètre par défaut est strict, ce qui représente Une exception est levée lorsqu'un caractère illégal est rencontré ;
S'il est défini sur ignore, les caractères illégaux seront ignorés ; replace, les caractères illégaux seront remplacés par ?;
S'ils sont définis sur xmlcharrefreplace, les références de caractères XML sont utilisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!