[Python de cero a uno] 3. Operaciones de archivos basadas en gramática, lectura y escritura de archivos CSV y orientación a objetos

Bienvenidos a todos a "Python de cero a uno", aquí compartiré alrededor de 200 artículos de la serie Python, llevaré a todos a aprender y jugar y ver el interesante mundo de Python. Todos los artículos se explicarán en combinación con el caso, el código y la experiencia del autor. Realmente quiero compartir mis casi diez años de experiencia en programación con usted. Espero que le sea útil. Por favor, también Haihan por las deficiencias del artículo.

El marco general de la serie Python incluye 10 gramática básica, 30 rastreadores web, 10 análisis visual, 20 aprendizaje automático, 20 análisis de big data, 30 reconocimiento de imágenes, 40 inteligencia artificial, 20 seguridad Python y 10 otras habilidades . Su atención, me gusta y reposts son su mayor apoyo para Xiuzhang. El conocimiento no tiene precio y la gente es cariñosa. Espero que todos podamos ser felices y crecer juntos en el camino de la vida.

Este artículo hace referencia al artículo de CSDN del autor, el enlace es el siguiente:

Al mismo tiempo, el recién inaugurado "Nazhang AI Security Home" del autor se centrará en Python y la tecnología de seguridad, compartiendo principalmente penetración web, seguridad del sistema, inteligencia artificial, análisis de big data, reconocimiento de imágenes, detección de códigos maliciosos, reproducción CVE, inteligencia de amenazas Análisis y otros artículos. Aunque el autor es un novato técnico, se asegurará de que todos los artículos se escriban con mucho cuidado. Espero que estos artículos básicos le sean útiles y progresen con todos en el camino hacia Python y la seguridad.



1. Operación de archivos

Archivo se refiere a una colección de datos almacenados en medios externos. Los métodos de codificación de archivos de texto incluyen formato ASCII, código Unicode, código UTF-8, código GBK, etc. El flujo de operación del archivo es una trilogía de "abrir archivo-leer y escribir archivo-cerrar archivo".

1. Abra el archivo

Para abrir un archivo, llame a la función open () y el resultado devuelto es un objeto de archivo. El prototipo de la función es el siguiente:

<variable> = open(<name>, <mode>)
    -<name>表示打开文件名称
    -<mode>表示文件打开模式

Los parámetros comunes del modo incluyen:

  • r: solo lectura, el puntero del archivo se colocará al principio del archivo
  • w: Solo escribir, si el archivo ya existe, abra el archivo y comience a editar desde el principio, es decir, se borrará el contenido original; si el archivo no existe, cree un nuevo archivo
  • a: Abra un archivo para agregar. Si el archivo ya existe, el puntero del archivo se colocará al final del archivo; si el archivo no existe, cree un nuevo archivo para escribir
  • rb: archivo binario de solo lectura, generalmente utilizado para archivos que no son de texto, como imágenes
  • wb: escribe solo archivos binarios, generalmente se usa para archivos que no son de texto, como imágenes
  • ab: abre un archivo en formato binario para agregar
  • w +: abre un archivo para leer y escribir

La sintaxis completa de la función open () es la siguiente:

  • open (file, mode = 'r', buffering = -1, encoding = None, errors = None, newline = None, closefd = True, abridor = None)

Inserte la descripción de la imagen aquí

Da un ejemplo simple:

infile = open("test.txt","r")

Nota: Utilice el método open () para asegurarse de que el objeto de archivo esté cerrado, es decir, llame al método close ().


2. Leer y escribir archivos

(1) Lectura de archivos
Los métodos de lectura de archivos más utilizados incluyen:

  • El valor de retorno de read () es una cadena que contiene todo el contenido del texto.
  • readline () devuelve una cadena que contiene el contenido de la siguiente línea del contenido del archivo
  • El valor de retorno de readlines () es una lista de todo el contenido del archivo, cada elemento de la lista es una línea de cadena

Los ejemplos son los siguientes:

infile = open("test.txt","r",encoding="utf8")
data = infile.read()
print(data)
print("")

infile = open("test.txt","r",encoding="utf8")
list_data = infile.readlines()
print(list_data)

El resultado de la salida se muestra en la siguiente figura:

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí


(2) Escribir archivo
Para escribir datos de la memoria de la computadora en un archivo, los métodos incluyen:

  • write () escribe una cadena que contiene datos de texto o datos binarios establecidos en el archivo
  • Writelines () acepta un parámetro de lista de cadenas para la operación de lista y lo escribe en el archivo
outfile1 = open('test.txt','a+',encoding="utf8")
str1 = '\nhello\n'  
str2 = 'world\n'
outfile1.write(str1)  
outfile1.write(str2)
outfile1.close()
  
outfile2 = open('test02.txt','w',encoding="utf8")
outfile2.writelines(['hello',' ','world'])  
outfile2.close()

infile = open('test.txt','r',encoding="utf8")
data = infile.read()
print(data)

Complete la operación de escritura adicional para el archivo test.txt, complete las operaciones new y write para el archivo test02.txt y llame a los métodos write () y writelines () para escribir datos al mismo tiempo.

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí


3. Cierre el archivo

Después de leer y escribir el archivo, recuerde utilizar el método close () para cerrar el archivo. Si olvida usar la declaración de cierre, cuando el programa se bloquea repentinamente, el programa no continuará realizando la operación de escritura, incluso después de que el programa haya completado la operación de escritura del archivo normalmente, debido a que el archivo no está cerrado, es posible que el archivo no contenga el archivo escrito. Los datos. Por seguridad, es necesario cerrar el archivo después de usarlo. Se recomienda que los lectores utilicen sentencias de captura de excepción try-excepto finalmente y cierren el archivo en la cláusula finalmente.

try:
	#文件操作
except :
    #异常处理
finally:
	file.close()

Otros métodos incluyen:

  • file.flush (): vacía el búfer interno del archivo
  • file.next (): devuelve la siguiente línea del archivo
  • file.seek (desplazamiento [, de dónde]): establece la posición actual del archivo
  • file.tell (): devuelve la posición actual del archivo
  • file.truncate ([size]): intercepta el archivo, los bytes interceptados se especifican por tamaño

4. Recorre los archivos

En el rastreo de datos o el análisis de datos, el recorrido de archivos a menudo está involucrado. El bucle for se usa generalmente para recorrer el contenido del archivo. Por un lado, puede llamar a la función read () para leer la salida del bucle de archivo y, por otro lado, también puede llamar a la función readlines (). El código de comparación de los dos métodos es el siguiente:

infile = open('test02.txt', 'r', encoding="utf8")
for line in infile.readlines():
   print(line)
print(infile.close())

infile = open('test02.txt', 'r', encoding="utf8").read()
for line in infile:
   print(line)
print(infile.close())

El resultado de salida "Jing Ye Si" se muestra en la figura siguiente, incluido el archivo TXT y el valor de salida.

Inserte la descripción de la imagen aquí



2. Operación de archivos CSV

Cuando usamos Python para el rastreo web o el análisis de datos, generalmente encontramos archivos CSV, que son similares a las tablas de Excel. Luego agregamos los conocimientos básicos de lectura y escritura de archivos SCV.

CSV (valores separados por comas) es un archivo de almacenamiento de uso común, con un separador de coma y un punto y coma entre los valores. Importe el paquete de extensión CSV en Python para usarlo, incluidos los archivos de escritura y lectura.

1. Escritura de archivos CSV

El proceso básico es el siguiente:

  • Importar módulo CSV
  • Crea un objeto de archivo CSV
  • Escribir en archivo CSV
  • Cerrar el archivo
# -*- coding: utf-8 -*-
import csv
c = open("test-01.csv", "w", encoding="utf8")  #写文件
writer = csv.writer(c)
writer.writerow(['序号','姓名','年龄'])
 
tlist = []
tlist.append("1")
tlist.append("小明")
tlist.append("10")
writer.writerow(tlist)
print(tlist,type(tlist))
 
del tlist[:]  #清空
tlist.append("2")
tlist.append("小红")
tlist.append("9")
writer.writerow(tlist)
print(tlist,type(tlist))
 
c.close()

El resultado de la salida se muestra en la siguiente figura:

Inserte la descripción de la imagen aquí

Tenga en cuenta que habrá líneas en blanco adicionales en este momento, necesitamos realizar un procesamiento simple, agregue el parámetro "newline = ''" para resolver.

  • c = abierto ("test-01.csv", "w", encoding = "utf8", nueva línea = '')

Inserte la descripción de la imagen aquí


2. Lectura de archivos CSV

El proceso básico es el siguiente:

  • Importar módulo CSV
  • Crea un objeto de archivo CSV
  • Leer archivo CSV
  • Cerrar el archivo
# -*- coding: utf-8 -*-
import csv
c = open("test-01.csv", "r", encoding="utf8")  #读文件
reader = csv.reader(c)
for line in reader:
    print(line[0],line[1],line[2])
c.close()

El resultado de la salida se muestra en la siguiente figura:

Inserte la descripción de la imagen aquí

Los problemas de codificación en las operaciones de archivos son los más problemáticos, especialmente en Python2. Sin embargo, solo debe ser coherente con el código del entorno, prestar atención a que la conversión relevante también se puede resolver de manera efectiva, y las operaciones de lectura y escritura del archivo Python3 se pueden mostrar normalmente escribiendo la codificación con claridad. Si se trata de una base de datos, una página web y un lenguaje de back-end, los tres métodos de codificación deben ser consistentes, como utf8 o gbk, etc., ¡y resolver los problemas específicos en detalle! El autor de seguimiento explicará el funcionamiento del archivo CSV junto con el rastreador.

Inserte la descripción de la imagen aquí



3. Fundamento orientado a objetos

El método de programación tradicional está orientado a procesos y se ejecuta de arriba a abajo según la lógica empresarial. La programación orientada a objetos es otro método de programación. Este método de programación debe implementarse utilizando "clases" y "objetos", y las funciones están encapsuladas. Una forma de programar más cercana a la vida real.

Orientado a objetos es un objeto que considera las cosas objetivas como atributos y comportamientos, forma clases abstrayendo las propiedades y comportamientos comunes de los objetos de la misma clase y se da cuenta de la reutilización del código mediante la herencia de clases y el polimorfismo. Un objeto es una instancia de una clase. Si compara un objeto con una casa, entonces la clase es el dibujo de diseño de la casa y las propiedades y métodos se definen en la clase.

Las tres características básicas de la orientación a objetos son:

  • Encapsulación : encapsula cosas objetivas en clases abstractas, donde los datos y los métodos de la clase permiten que la clase o el objeto operen.
  • Herencia : después de que la subclase hereda la clase principal, puede usar todas las funciones de la clase principal sin reescribir la clase original y puede extender las funciones.
  • Polimorfismo : Los atributos o comportamientos definidos en una clase pueden tener diferentes tipos de datos o exhibir diferentes comportamientos después de ser heredados por una clase especial. Cada clase puede exhibir una semántica diferente. Los dos métodos de implementación son anulación y sobrecarga.

En Python, una clase es una plantilla. La plantilla puede contener varias funciones, que implementan algunas funciones; un objeto es una instancia creada en base a la plantilla, y las funciones de la clase se pueden ejecutar a través del objeto de instancia. como sigue:

#创建类
class 类名:
	#创建类中的函数,self特殊参数,不能省略
	def 函数名(self):
		#函数实现
		
#根据类创建对象obj
obj = 类名()

Suponga que necesita escribir un programa para calcular el área y el perímetro de un rectángulo. La idea es definir la longitud y el ancho de dos variables, y luego definir el método para calcular el área y el perímetro en la clase y usarlo como ejemplo. el código se muestra a continuación:

#-*- coding:utf-8 -*-
class Rect:
    def __init__(self, length, width):
        self.length = length;
        self.width = width;

    def detail(self):
        print(self.length, self.width)

    def showArea(self):
        area = self.length * self.width
        return area

    def showCir(self):
        cir = (self.length + self.width) * 2
        return cir
#实例化
rect1 = Rect(4,5)
#调用函数
rect1.detail()
area = rect1.showArea()
cir = rect1.showCir()
print('面积:', area)
print('周长:', cir)

El área de salida es 20 y el perímetro es 18. Para la encapsulación orientada a objetos, en realidad se encapsula el contenido en el objeto mediante el método de construcción y luego se obtiene el contenido encapsulado directa o indirectamente a través del objeto.

Inserte la descripción de la imagen aquí

En general, orientado a objetos es pensar y resolver problemas desde la perspectiva de las cosas mismas. Si lo anterior se implementa en forma de funciones de definición orientadas a procesos, cuando hay múltiples formas, es necesario definir un método para cada forma. Orientado a objetos solo necesita abstraer los atributos y métodos de estas formas para formar varias formas, que están más en línea con la situación real.

Nota: Para permitir que los lectores aprendan el rastreo de datos de Python, el análisis de datos, el reconocimiento de imágenes y otros conocimientos de manera más concisa y rápida, los códigos de esta serie rara vez se presentan en la forma de definir clases y objetos, sino directamente en función de las funciones o casos que deben implementarse. Escriba directamente el código correspondiente o la implementación de la función. Esto es irregular e irrazonable. En el desarrollo real o en un código más estandarizado, se recomienda que utilice un método orientado a objetos para programar, pero esta serie quiere mostrarle el principio a través del código más conciso, y luego puede mejorar y practica tus habilidades.


El patrón de diseño orientado a objetos
da otro ejemplo: para facilitar el aprendizaje de los niños a programar, la empresa X ha desarrollado un simulador de coche de carreras. Con este simulador, cada niño puede utilizar un lenguaje simple para controlar un coche, como derecha, izquierda, etc. Por favor diseñe un lenguaje sencillo, proporcione su gramática y diagrama de clases del idioma.

Este es el problema relacionado con la vida en nuestra programación actual. Implica el conocimiento de patrones de diseño. El método que utilizo es implementado por "modo de nomenclatura". El cliente define Niños y Coche, y el solicitante es Derecha e Izquierda enviado por Niños. , Comandos arriba, abajo, el receptor es Car ejecuta Move (), el comando abstracto es la interfaz abstracta de arriba, abajo, izquierda y derecha, y el comando específico es arriba, abajo, izquierda y derecha de Car. El diagrama de clases que hice es el siguiente:

Inserte la descripción de la imagen aquí
en este ejemplo, usamos el pensamiento orientado a objetos, el pensamiento y la resolución de problemas desde la perspectiva de las cosas mismas, en lugar de la realización formal de funciones orientadas a procesos. Si hay otro vehículo aire-terrestre, no solo puede moverse hacia arriba y hacia abajo, izquierda y derecha, sino también volar. El método tradicional también necesita escribir cuatro métodos más para moverse hacia arriba y hacia abajo, y el orientado a objetos hereda directamente Car y agrega un nuevo método de vuelo. (Sin dirección), este es el beneficio de la orientación a objetos.

De manera similar, a través de este ejemplo, no estoy tratando de probar si el modo de comando o el diagrama de clases dibujado es correcto. Lo que quiero explicar es que nuestro conocimiento orientado a objetos de aprendizaje se usa principalmente para resolver problemas en la vida real, de modo que pueda resolver problemas de manera más eficiente. Y código optimizado. Al mismo tiempo, el pensamiento orientado a objetos debe adaptarse a los cambios en los requisitos y resolver las necesidades reales de los usuarios. Los cambios deben considerarse tanto como sea posible al diseñar, lo que implica abstracción, cambios de encapsulación (énfasis), patrones de diseño y otros conocimientos.



Cuatro. Resumen

En cualquier caso, el autor espera que este artículo pueda darte algo de conocimiento sobre Python, y espero que puedas seguirme para escribir código y progresar juntos. Si el artículo puede proporcionar algunas ideas triviales y ayudar a su investigación o proyecto, será aún más gratificante. La mayor expectativa del autor es que algunas de las historias, palabras, códigos o casos del artículo sean útiles para usted y para quienes trabajan duro.

Agradecimiento al artículo anterior:

Finalmente, agradezco sinceramente su atención a la cuenta pública de la "Casa Nazhang", agradezco a CSDN por tantos años de compañía, siempre insistiré en compartir, espero que mi artículo pueda acompañarlo a crecer, y espero continuar avanzando en el camino de la tecnología. Si el artículo es útil y sentimental para ti, es la mejor manera de devolverlo, ¡léelo y aprecialo! La cuenta oficial establecida el 18 de agosto de 2020, gracias nuevamente por su atención, y por favor ayude a promover la "Casa Nazhang", jaja ~ recién llegado, por favor denos su consejo.

Inserte la descripción de la imagen aquí

Desafortunadamente, háganos saber cómo ser perfectos.
Falleciendo, sigamos avanzando.
Su figura en la noche es tan hermosa.

(Por: Nazhang House Eastmount 2020-09-22 noche en Wuhan https://blog.csdn.net/Eastmount )


Las referencias son las siguientes:

Supongo que te gusta

Origin blog.csdn.net/Eastmount/article/details/108737755
Recomendado
Clasificación