[Le Python] fichier lire et écrire

objet fichier python fournit trois approche "lire": Read (), readline () et readlines () . Chaque méthode peut accepter une variable pour limiter la quantité de données lues à chaque fois.

  • read () chaque lecture la totalité du fichier , le fichier est généralement contenu utilisé dans une variable de chaîne. Si le fichier est plus grand que la mémoire disponible, pour être sûr, vous pouvez appeler à plusieurs reprises read(size)la méthode, chaque lecture jusqu'à la taille octets de contenu.
  • readlines () une fois lu le fichier entier , comme .read () la même chose. .readlines () analyse automatiquement le contenu du fichier dans une liste de lignes , cette liste peuvent être traités par la structure ... Python pour ....
  • readline () un temps pour lire une ligne , généralement beaucoup plus lente que readlines (). Seulement quand il n'y a pas assez de mémoire pour lire le fichier entier une fois, vous devez utiliser le readline ().

Note : Ces trois méthodes est la fin de chaque ligne « \ n » lecture est venu, il ne fait pas défaut à « \ n » enlevé, il faut supprimé manuellement.


objet fichier Python fournit deux méthode "d'écriture": Write ()  et writelines () .

  • écriture () et une lecture (), méthode readline () correspond à la chaîne de caractères est écrit dans le fichier.
  • la méthode writelines () et la méthode readlines () correspondant à, mais aussi pour la liste des opérations. Il reçoit une liste de chaînes comme arguments, pour les écrire dans un fichier, la nouvelle ligne est automatiquement ajoutée, par conséquent, nécessite une jointure explicite des sauts de ligne .

A propos de paramètre de mode ouvert () :

'R': Lire

'W': écriture

'A': append

R '+' == r + w (lecture et écriture, si le fichier existe sur l'erreur (IOError))

« W + » == w + r (lecture et écriture, le fichier est créé si présent)

'A +' == a + r (inscriptible peut être ajouté, s'il y a un fichier créé)

La correspondance, si elle est un fichier binaire, vous pouvez ajouter un millier de millions de b:

'RB' 'nous' 'bébé' 'RB +' 'I +' amère '+'


exemple:

    Il y a deux fichiers, chacun avec l'adresse de plusieurs lignes, trouver la même adresse ip deux fichiers:

# coding:utf-8
import bisect

with open('test1.txt', 'r') as f1:# 'with'can close file automaticlly
    list1 = f1.readlines()
for i in range(0, len(list1)):
    list1[i] = list1[i].strip('\n')
with open('test2.txt', 'r') as f2:
    list2 = f2.readlines()
for i in range(0, len(list2)):
    list2[i] = list2[i].strip('\n')

list2.sort()
length_2 = len(list2)
same_data = []
for i in list1:
    pos = bisect.bisect_left(list2, i) #二分法
    if pos < len(list2) and list2[pos] == i:
        same_data.append(i)
same_data = list(set(same_data))#利用set的唯一性去除重复项
print(same_data)

bisect  pour commander  un module de réseau triées et les opérations d' insertion.

Procédé comprenant:

     bisect bisect_left bisect_right insort insort_left insort_right

     Ce qui est appelé bisect bisect_right, insort est appelé insort_right

 

bisect_left (a, x, lo = 0, salut = None)

- un objet de celle - ci est de trouver la valeur sera insérée et la position en retrait, sans insertion. Si x  est présent dans une position x dans le retour à gauche

import bisect

li = [1, 23, 45, 12, 23, 42, 54, 123, 14, 52, 3]
li.sort()
print(li)
print(bisect.bisect_left(li, 3))


result:
[1, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]
1

insort_left (a, x, lo = 0, salut = None)

- l'insertion de l'élément x dans une liste, le genre triés et conservés. Si x est déjà dans un, l'insérer dans la gauche et à droite de x.

import bisect

li = [1, 23, 45, 12, 23, 42, 54, 123, 14, 52, 3]
li.sort()
print(li)
bisect.insort_left(li, 3.0)
print(li)

result:

[1, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]
[1, 3.0, 3, 12, 14, 23, 23, 42, 45, 52, 54, 123]

 

Publié 89 articles originaux · louange gagné 17 · vues 40000 +

Je suppose que tu aimes

Origine blog.csdn.net/lbt_dvshare/article/details/88597292
conseillé
Classement