当前位置: 首页 > article >正文

Python基础入门掌握(十三)

从基础到进阶,轻松掌握文件读写

目录

文件操作的基本概念

文件的打开与关闭

读取文件内容

写入文件内容

文件操作的高级技巧

总结与建议‍

文件操作的基本概念

在Python中,文件操作主要涉及以下几个步骤:

打开文件(open函数)。

读取或写入文件内容。

关闭文件(close方法)。

Python提供了多种方式来操作文件,包括文本文件和二进制文件。接下来,我们通过具体的代码示例来深入了解这些操作。

文件的打开与关闭

场景一:打开文件并手动关闭

使用open()函数打开文件,并通过close()方法手动关闭文件。

# 示例1:手动打开和关闭文件

 

file = open("example.txt", "r", encoding="utf-8")  # 打开文件,只读模式

content = file.read()  # 读取文件内容

print("文件内容:", content)

file.close()  # 关闭文件

 

适用场景:适合初学者理解文件的打开和关闭过程。

场景二:使用with语句自动关闭文件

with语句可以自动管理文件的打开和关闭,更加安全和方便。

# 示例2:使用with语句打开文件

 

with open("example.txt", "r", encoding="utf-8") as file:

    content = file.read()

    print("文件内容:", content)

 

# 文件会在with语句结束后自动关闭

适用场景:推荐在实际开发中使用with语句,避免忘记关闭文件。

读取文件内容

场景三:逐行读取文件

使用readline()或readlines()方法逐行读取文件内容。

# 示例3:逐行读取文件

 

with open("example.txt", "r", encoding="utf-8") as file:

    lines = file.readlines()  # 读取所有行

    for line in lines:

        print("读取的行:", line.strip())  # 去掉换行符

 

适用场景:适合处理包含多行内容的文件。

场景四:按行迭代读取文件

直接迭代文件对象,逐行读取内容。

# 示例4:按行迭代读取文件

 

with open("example.txt", "r", encoding="utf-8") as file:

    for line in file:

        print("读取的行:", line.strip())

 

适用场景:适合处理大文件,避免一次性读取过多内容。

写入文件内容

场景五:向文件写入内容

使用write()方法向文件写入内容。

# 示例5:向文件写入内容

 

with open("output.txt", "w", encoding="utf-8") as file:

    file.write("这是第一行内容。\n")

    file.write("这是第二行内容。\n")

print("写入完成!")

 

适用场景:适合写入简单的文本内容。

场景六:追加内容到文件

使用a模式打开文件,追加内容而不是覆盖。

# 示例6:追加内容到文件

 

with open("output.txt", "a", encoding="utf-8") as file:

    file.write("这是追加的内容。\n")

print("追加完成!")

 

适用场景:适合在文件末尾追加内容,而不覆盖原有内容。

文件操作的高级技巧

场景七:读取文件的指定部分

使用read()方法的参数指定读取的字节数。

# 示例7:读取文件的指定部分

 

with open("example.txt", "r", encoding="utf-8") as file:

    first_10_chars = file.read(10)  # 读取前10个字符

    print("读取的前10个字符:", first_10_chars)

 

适用场景:适合处理大文件时,只读取部分内容。

场景八:读取和写入二进制文件

使用rb和wb模式处理二进制文件,如图片或音频文件。

# 示例8:复制一个图片文件

 

with open("example.jpg", "rb") as source:

    with open("copy_example.jpg", "wb") as target:

        target.write(source.read())

print("图片复制完成!")

 

适用场景:适合处理非文本文件,如图片、音频等。

场景九:使用seek()和tell()操作文件指针

seek()方法用于移动文件指针,tell()方法用于获取当前指针位置。

# 示例9:使用seek()和tell()

 

with open("example.txt", "r", encoding="utf-8") as file:

    print("当前指针位置:", file.tell())  # 获取当前指针位置

    file.seek(10)  # 将指针移动到第10个字符

    print("移动后读取的内容:", file.read(5))  # 从当前位置读取5个字符

 

适用场景:适合需要精确控制文件读写位置的场景。

圛景十:处理文件和目录

使用os模块和shutil模块处理文件和目录。

 

import os

import shutil

# 示例10:创建目录、复制文件和删除文件

os.mkdir("test_dir")  # 创建目录

shutil.copy("example.txt", "test_dir/copy_example.txt")  # 复制文件到目录

os.remove("test_dir/copy_example.txt")  # 删除文件

os.rmdir("test_dir")  # 删除空目录

print("文件和目录操作完成!")

 

适用场景:适合需要进行文件和目录管理的场景。‍

Python中的类机制,从入门到精通

面向对象编程(OOP)是现代编程中最核心的范式之一,而类(Class)是面向对象编程的灵魂。Python中的类机制不仅功能强大,而且使用起来非常灵活。通过类,我们可以定义自己的数据类型,封装数据和功能,实现代码的复用和模块化。

目录

类的基本定义与实例化

属性与方法

构造方法与初始化

继承与多态

类的高级特性

总结与建议‍

类的基本定义与实例化

场景一:定义一个简单的类

类是对象的模板,定义了对象的属性和方法。

# 示例1:定义一个简单的类

 

class Person:

    """一个简单的Person类"""

    pass

# 创建类的实例

 

person = Person()

print("创建了一个Person类的实例:", person)

 

适用场景:当你需要定义一个自定义的数据类型时,可以使用class关键字。

属性与方法

场景二:为类添加属性

属性是类的变量,用于存储数据。

# 示例2:为类添加属性

 

class Person:

    """带有一个属性的Person类"""

    name = "张三"  # 类属性

    age = 18

# 访问类属性

print("Person的名字是:", Person.name)

print("Person的年龄是:", Person.age)

 

适用场景:类属性适用于所有实例共享的属性。

场景三:为类添加方法

方法是类中的函数,用于定义对象的行为。

# 示例3:为类添加方法

 

class Person:

    """一个带有方法的Person类"""

    name = "张三"

    age = 18

    def greet(self):# 方法

        print(f"你好,我是{self.name},今年{self.age}岁。")

# 创建实例并调用方法

person = Person()

person.greet()  # 输出:你好,我是张三,今年18岁。

 

适用场景:方法用于定义对象的行为,通过self参数绑定到实例。

构造方法与初始化

场景四:使用__init__方法初始化实例

__init__方法是构造方法,用于初始化实例的属性。

# 示例4:使用__init__方法初始化实例

 

class Person:

    """一个带有构造方法的Person类"""

    def __init__(self, name, age):

        self.name = name  # 实例属性

        self.age = age

    def greet(self):

        print(f"你好,我是{self.name},今年{self.age}岁。")

# 创建实例并初始化

person = Person("张三", 20)

person.greet()  # 输出:你好,我是张三,今年20岁。

 

适用场景:__init__方法用于在创建实例时初始化属性。

场景五:使用__str__方法定义对象的字符串表示

__str__方法用于定义对象的字符串表示,方便打印和调试。

# 示例5:使用__str__方法定义对象的字符串表示

 

class Person:

    """一个带有__str__方法的Person类"""

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def __str__(self):

        returnf"姓名:{self.name},年龄:{self.age}"

# 创建实例并打印

person = Person("张三", 20)

print(person)  # 输出:姓名:张三,年龄:20

 

适用场景:__str__方法用于定义对象的友好字符串表示。

继承与多态

场景六:使用继承创建子类

继承允许子类继承父类的属性和方法。

# 示例6:使用继承创建子类

 

class Animal:

    """动物类"""

    def __init__(self, name):

        self.name = name

    def speak(self):

        print(f"{self.name}说:动物的声音")

class Dog(Animal):

    """狗类继承自动物类"""

    def speak(self):# 重写方法

        print(f"{self.name}说:汪汪!")

# 创建子类实例

dog = Dog("旺财")

dog.speak()  # 输出:旺财说:汪汪!

 

适用场景:继承用于实现代码复用,子类可以继承父类的属性和方法。

场景七:多态的实现

多态允许子类以不同的方式实现父类的方法。

# 示例7:多态的实现

 

class Animal:

    """动物类"""

    def speak(self):

        print("动物的声音")

class Dog(Animal):

    """狗类"""

    def speak(self):

        print("汪汪!")

class Cat(Animal):

    """猫类"""

    def speak(self):

        print("喵喵!")

# 多态的使用

def animal_sound(animal):

    animal.speak()

# 创建实例并调用

dog = Dog()

cat = Cat()

animal_sound(dog)  # 输出:汪汪!

animal_sound(cat)  # 输出:喵喵!

 

适用场景:多态允许通过统一的接口调用不同子类的方法。

类的高级特性

场景八:使用类方法和静态方法

类方法和静态方法是特殊的绑定方法。

# 示例8:使用类方法和静态方法

 

class Dog:

    """一个带有类方法和静态方法的狗类"""

    def __init__(self, name):

        self.name = name

    @classmethod

    def from_name(cls, name):

        return cls(name)  # 类方法用于创建实例

    @staticmethod

    def bark():

        print("汪汪!")  # 静态方法

# 使用类方法创建实例

dog = Dog.from_name("旺财")

print(dog.name)  # 输出:旺财

# 调用静态方法

Dog.bark()  # 输出:汪汪!

 

适用场景:类方法用于与类相关的操作,静态方法用于与类无关的工具方法。

场景九:使用私有属性和方法

私有属性和方法以双下划线开头,用于封装数据。

# 示例9:使用私有属性和方法

 

class Dog:

    """一个带有私有属性和方法的狗类"""

    def __init__(self, name):

        self.__name = name  # 私有属性

    def get_name(self):# 公开方法访问私有属性

        return self.__name

    def __bark(self):# 私有方法

        print("汪汪!")

# 创建实例并访问

dog = Dog("旺财")

print(dog.get_name())  # 输出:旺财

# dog.__bark()  # 无法直接访问私有方法

 

适用场景:私有属性和方法用于封装数据,防止外部直接访问。

场景十:使用装饰器和属性

使用@property装饰器将方法作为属性访问。

# 示例10:使用装饰器和属性

 

class Dog:

    """一个带有装饰器的狗类"""

    def __init__(self, name):

        self._name = name

    @property

    def name(self):

        return self._name

    @name.setter

    def name(self, value):

        ifnot value:

            raise ValueError("名字不能为空")

        self._name = value

# 创建实例并访问属性

dog = Dog("旺财")

print(dog.name)  # 输出:旺财

dog.name = "大黄"

print(dog.name)  # 输出:大黄

 

适用场景:@property装饰器用于将方法作为属性访问,同时可以添加逻辑验证。

总结与建议

通过以上10个代码示例,我们深入探讨了Python中的类机制,从基本定义到高级特性,希望这些内容能帮助你更好地理解和应用面向对象编程。

类是对象的模板:通过类可以定义自己的数据类型,封装数据和行为。

构造方法用于初始化:__init__方法用于在创建实例时初始化属性。

继承和多态实现代码复用:通过继承可以实现代码复用,多态允许不同子类以不同方式实现父类方法。

高级特性提升代码可维护性:类方法、静态方法、私有属性和@property装饰器等高级特性可以提升代码的可维护性和封装性。

面向对象编程是Python中最强大的特性之一,掌握它不仅能让你的代码更加模块化和可维护,还能让你在解决复杂问题时更加得心应手

 


http://www.kler.cn/a/589336.html

相关文章:

  • Spring源码解析
  • 自然语言处理demo:基于Python的《三体》文本分析
  • 更轻量级的的Knf4j接口文档配置实战
  • 【Linux篇】环境变量与地址空间
  • C++ 类和对象----构造函数
  • 一个简单的RPC示例:服务端和客户端
  • 【算法day13】最长公共前缀
  • AI时代的软件测试该如何“破局”?
  • 【Qt】QWidget属性2
  • 【项目合集】基于ESP32的智能化妆柜
  • 【Azure 架构师学习笔记】- Azure Databricks (22) --Autoloader
  • 随笔小记-本人常用桌面应用(流程图-boardmix,截图-snipaste,文件比较-beyond compare,远程控制-向日葵,解压-360压缩)
  • 机试准备第18天
  • Python的类和对象(4)
  • 在Django模型中的Mysql安装
  • oracle 基础知识之 多表查询
  • JVM---Java 类生命周期与类加载机制
  • 电子电气架构 --- 智能电动汽车的品牌竞争转变
  • 【失败了】LazyGraphRAG利用本地ollama提供Embedding model服务和火山引擎的deepseek API构建本地知识库
  • 面试系列|蚂蚁金服技术面【3】