python codecs.open () leer y escribir archivos

con codecs.open () como f 相比 con open () como f

      Se estima que los archivos de lectura y escritura de Python usan la función incorporada abierta.

      La forma de abrir un archivo es generalmente: con open (file_name, access_mode = 'r', buffering = -1) como f. file_name es la ruta del archivo más el nombre del archivo. Sin la ruta, el archivo se almacenará en la ruta del programa Python.

Access_mode es el modo de operación de los archivos, principalmente r, w, rb, wb, etc. Hay muchos detalles en Internet, y buffering = -1 se usa para indicar el método de caché usado para acceder al archivo. 0 significa que no hay caché; 1 significa que solo se almacena en caché una línea y n significa que n líneas se almacenan en caché. Si no se proporciona o es un número negativo, significa que se utiliza el mecanismo de almacenamiento en caché predeterminado del sistema.

      Después de abrir, es la operación de escritura y lectura. Sin embargo, existen algunos problemas al abrir con el método abierto. Open solo puede escribir el tipo str en archivos abiertos, sin importar el método de codificación de la cadena.

Esto es perfectamente posible. Pero a veces, cuando rastreamos o escribimos algunos datos de otras formas, habrá un problema de codificación inconsistente al escribir archivos, por lo que generalmente convertimos a Unicode de manera uniforme. En este momento, hay un problema al escribir en un archivo abierto en modo abierto. P.ej

>>> línea = u '我'
>>> f.write (línea)


UnicodeEncodeError: el códec 'ascii' no puede codificar caracteres

Qué hacer, podemos codificar la línea anterior en tipo str, pero es demasiado problemático. Tenemos que decodificar lo que obtenemos en Unicode y luego codificar en str. . .

archivo de entrada (gbk, utf-8 ...) ---- decodificar -----> unicode ------- codificar ------> archivo de salida (gbk, utf-8 ... )

En lugar de esta engorrosa operación es codecs.open, por ejemplo

>>> importar códecs
>>> con codecs.open ('test1.txt', 'a', 'utf-8') como f:
>>> fw.write (línea)
 

Supongo que te gusta

Origin blog.csdn.net/Growing_hacker/article/details/107957570
Recomendado
Clasificación