Maison >développement back-end >Tutoriel Python >Opérations sur les fichiers en Python
1. Les objets qui peuvent appeler des méthodes doivent être des objets, tels que des valeurs, des chaînes, des listes, des tuples, des dictionnaires et même des fichiers. Tout en Python est un objet.
str1 = 'hello' str2 = 'world' str3 = ' '.join([str1,str2]) print(str3)
2. Trois modes de fonctionnement de base des fichiers : r (lecture uniquement), w (écriture uniquement), a (ajouter)
Le processus d'exploitation d'un fichier :
Tout d'abord, créez un objet fichier.
Deuxièmement, appelez la méthode file pour opérer.
Troisièmement, n'oubliez pas de fermer le fichier. (Si le fichier n'est pas fermé, le contenu sera placé dans le cache. Bien que Python lise automatiquement le contenu sur le disque à la fin, juste au cas où, vous devez prendre l'habitude de fermer le fichier)
Fichier file1
一张褪色的照片, 好像带给我一点点怀念。 巷尾老爷爷卖的热汤面, 味道弥漫过旧旧的后院; 流浪猫睡熟在摇晃秋千, 夕阳照了一遍他咪着眼; 那张同桌寄的明信片, 安静的躺在课桌的里面。
(1)r mode
L'écriture de contenu en mode lecture seule signalera une erreur.
f = open('file1','r') f_read = f.read() #read是逐字符地读取,read可以指定参数,设定需要读取多少字符,无论一个英文字母还是一个汉字都是一个字符。 print(f_read) f.close()
f = open('file1','r') f_read = f.readline() #readline只能读取第一行代码,原理是读取到第一个换行符就停止。 print(f_read) f.close()
f = open('file1','r') f_read = f.readlines() #readlines会把内容以列表的形式输出。 print(f_read) f.close()
f = open('file1','r') for line in f.readlines() #使用for循环可以把内容按字符串输出。 print(line) #输出一行内容输出一个空行,一行内容一行空格... 因为文件中每行内容后面都有一个换行符,而且print()语句本身就可以换行,如果不想输出空行,就需要使用下面的语句:print(line.strip()) f.close()
(2) mode w
Tout le contenu du fichier sera effacé avant l'opération. Par exemple, si vous écrivez « bonjour tout le monde » dans le fichier 1, une fois le programme exécuté, il n'y aura que la phrase « bonjour tout le monde »
f = open('file1','w',encoding='utf8') #由于Python3的默认编码方式是Unicode,所以在写入文件的时候需要调用utf8,以utf8的方式保存,这时pycharm(默认编码方式是utf8)才能正确读取,当读取文件时,文件是utf8格式,pycharm也是utf8,就不需要调用了。 f_w = f.write('hello world') print(f_w) #有意思的是,这里并不打印'hello world',只打印写入多少字符 f.close()
(3) Le mode a
est différent du mode w en ce sens qu'un mode n'efface pas le contenu d'origine, mais déplace le curseur vers la dernière position du contenu et continue d'écrire du nouveau contenu. Par exemple, ajoutez « hello world » à la fin
f = open('file1','a') f_a = f.write('hello world') print(f_a) #还是会打印写入的字符数 f.close()
pour imprimer le fichier, et ajoutez « helloworld » après « chat errant qui dort profondément sur le swing' to output
En mode r, nous avons dit que nous utilisons for loop et readlines() pour sortir le contenu du fichier. Le principe de ce contenu de sortie est : ouvrir le fichier, lire tout le contenu dans la mémoire. , puis imprimez l'entrée Lorsque le fichier est très volumineux, Lorsque les données sont volumineuses, cette méthode de lecture n'est pas fiable et peut même provoquer un crash de la machine. Nous devons fermer le fichier à temps, comme suit :
f = open('file','r') data=f.readlines() #注意及时关闭文件 f.close() num = 0 for i in data: num += 1 if num == 5: i = ''.join([i.strip(),'hello world']) #不要使用“+”进行拼接 print(i.strip()) f.close()
Pour les fichiers de données volumineux, utilisez la méthode suivante :
num = 0 f.close() #不要过早关闭文件,否则程序不能识别操作句柄f. f = open('file','r') for i in f: #for内部把f变为一个迭代器,用一行取一行。 num += 1 if num == 5: i = ''.join([i.strip(),'hello world']) print(i.strip()) f.close()
3.tell and seek
tell : Interroger la position du curseur dans le fichier
seek : Positionnement du curseur
f = open('file','r') print(f.tell()) #光标默认在起始位置 f.seek(10) #把光标定位到第10个字符之后 print(f.tell()) #输出10 f.close() ---------------------- f = open('file','w') print(f.tell()) #先清空内容,光标回到0位置 f.seek(10) print(f.tell()) f.close() ---------------------- f = open('file','a') print(f.tell()) #光标默认在最后位置 f.write('你好 世界') print(f.tell()) #光标向后9个字符,仍在最后位置 f.close()
4.flush transfère de manière synchrone les données du cache vers le disque
Exemple d'implémentation de la fonction de barre de progression
import sys,time #导入sys和time模块 for i in range(40): sys.stdout.write('*') sys.stdout.flush() #flush的作用相当于照相,拍一张冲洗一张 time.sleep(0.2) 下面代码也能够实现相同的功能 import time for i in range(40): print('*',end='',flush=True) #print中的flush参数 time.sleep(0.2)
5.truncate truncation
ne peut pas être exécuté en mode r En
w mode, toutes les données ont été effacées. Il ne sert à rien d'utiliser truncate <.>
un mode , tronque le contenu après la position spécifiée.f = open('file','a') f.truncate(6) #只显示6个字节的内容(6个英文字符或三个汉字),后面的内容被清空。6. Résumé de la position du curseur Un caractère chinois a deux octets, et il existe 4 méthodes impliquant la position du curseur : lire, raconter, chercher, tronquer.
#--------------------------光标总结head----------------------------------- f = open('file','r') print(f.read(6)) #6个字符 print(f.tell()) #位置12字节,一个汉字两个字节 f.close() f = open('file','r') f.seek(6) #6个字节 print(f.tell()) f.close() f = open('file','a') print(f.tell()) #光标默认在最后位置 f.write('你好 世界') print(f.tell()) #光标向后9个字节,一个汉字两个字节,仍在最后位置 182-->191 f.close() f = open('file','a',encoding='utf-8') print(f.truncate(6)) #由于需要光标定位位置,所以也是字节。只显示6个字节的内容(6个英文字母或三个汉字,一个汉字两个字节),后面的内容被清空。 f.close() #-----------------------------光标总结end---------------------------------7. 3 autres modes : r, w, a r : mode lecture et écriture, le curseur est au commençant par position par défaut, lorsque l'écriture est nécessaire, le curseur se déplace automatiquement vers la fin w : mode écriture et lecture, effacez d'abord le contenu original, puis écrivez, vous pouvez également lire a : Ajouter le mode de lecture, le curseur est à la dernière position par défaut, l'écriture directe peut également être lue.
f = open('file','a') print(f.tell()) #末尾207位置 f.close() f = open('file','r+') print(f.tell()) #0位置 print(f.readline()) #读取第一行 f.write('羊小羚') #光标移到末尾207位置并写入 print(f.tell()) #213位置 f.seek(0) #光标移到0位置 print(f.readline()) #读取第一行 f.close()8. Modifier le contenu du fichier Idée : En raison du mécanisme de stockage des données, nous ne pouvons stocker le contenu que dans un fichier 1 Lisez-le, modifiez-le et placez-le dans le fichier 2.
f2 = open('file2','w',encoding='utf8') #写入的时候必须加utf8 f1 = open('file','r') num = 0 for line in f1: #迭代器 num += 1 if num == 5: line = ''.join([line.strip(),'羊小羚\n']) #里面就是对字符串进行操作了 f2.write(line) f1.close() f2.close()9.with instruction peut opérer sur plusieurs fichiers en même temps Lorsque le bloc de code with est exécuté, il est exécuté. fermera automatiquement le fichier pour libérer des ressources mémoire. Il n'est pas nécessaire d'ajouter spécifiquement f.close() Nous découvrirons l'utilisation et les avantages de with à travers l'exemple suivant. Réécrivez le code en 8 en utilisant l'instruction with
num = 0 with open('file','r') as f1,open('file2','w',encoding='utf8') as f2: for line in f1: num += 1 if num == 5: line = ''.join([line.strip(),'羊小羚']) f2.write(line)Résumé
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il pourra être utile à tout le monde. Si vous avez des questions, vous pouvez laisser un message pour communiquer
Pour plus d'articles liés aux opérations sur les fichiers en Python, veuillez faire attention au site Web PHP chinois !