[El Python] archivo de leer y escribir

objeto de archivo Python proporciona tres enfoque de "leer": read (), readline () y readlines () . Cada método puede aceptar una variable para limitar la cantidad de datos leídos cada vez.

  • Read () que cada uno lea todo el archivo , el archivo se utiliza normalmente el contenido en una variable de cadena. Si el archivo es mayor que la memoria disponible, para estar seguro, puede llamar repetidamente read(size)el método, cada lectura hasta el tamaño de bytes de contenido.
  • readlines () una vez leído el archivo completo , al igual que .read () de la misma. .readlines () analiza automáticamente el contenido del archivo en una lista de líneas , esta lista pueden ser procesados por la estructura en ... Python para ....
  • readline () un tiempo para leer una línea , por lo general mucho más lento que readlines (). Sólo cuando no hay suficiente memoria para leer todo el archivo una vez, debe usar el readline ().

Nota : Estos tres métodos es el final de cada línea '\ n' lectura entró, que no por defecto a '\ n' eliminado, necesitamos eliminado manualmente.


objeto de archivo Python proporciona dos métodos de "escritura": la escritura ()  y writelines () .

  • método de escritura () y un read (), readline () método corresponde a la cadena se escriben en el archivo.
  • los método writelines () y el readlines método () correspondiente a, pero también para la lista de operaciones. Se recibe una lista de cadenas como argumentos, escribirlas en un archivo, no se añade automáticamente el carácter de nueva línea, por lo tanto, requiere una explícita se unen a los saltos de línea .

Sobre parámetro de modo abierto () :

'R': Leer

'W': escritura

'A': Anexar

'R +' == r + w (de lectura y escritura, si existe el archivo en el error (IOError))

'W +' == w + r (lectura y escritura, el archivo se crea si está presente)

'A +' == a + r (escribible puede ser añadido, si hay un archivo creado)

La correspondencia, si es un archivo binario, se puede agregar un mil millones de b:

'RB' 'nosotros' 'bebé' 'RB +' '+ I' amarga '+'


ejemplo:

    Hay dos archivos, cada uno con la dirección ip muchas filas, encontrar la misma dirección ip dos archivos:

# 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)

bisecar  para ordenar  un ordenados operaciones del módulo de matriz y de inserción.

Un método que comprende:

     bisect bisect_left bisect_right insort insort_left insort_right

     ¿Qué bisect se llama bisect_right, insort se llama insort_right

 

bisect_left (a, x, lo = 0, hi = Ninguno)

- un objeto del mismo es encontrar el valor será posición y de vuelta inserta, sin inserción. Si x  está presente en una posición x en la vuelta izquierda

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, hi = Ninguno)

- la inserción de los elementos de x en una lista, ordenadas según el tipo y la sostuvo. Si x es ya en una, insertarlo en la izquierda y la derecha 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]

 

Publicado 89 artículos originales · ganado elogios 17 · Vistas a 40000 +

Supongo que te gusta

Origin blog.csdn.net/lbt_dvshare/article/details/88597292
Recomendado
Clasificación