Python学习笔记15:进阶篇(四)文件的读写。

python 文件读写操作 + 几道例题 用python读写文件是经常需要进行的操作,总的来说,文件的读写分为三步: 1、打开文件,获取句柄; 2、操作文件; 3、关闭文件 这里的句柄是一个抽象的专业名词,现在我们先姑且将其理解为一种工具,正如捕鱼需用网,提桶得握“柄”。 现在看最简单的一个例子,现在我要打开一个已经存在的txt文件,并希望能将这个txt文件的内容显示出来。 with open("test.en", "r", encodi... 阅读详情

文件操作

学习编程操作中,我觉得文件操作是必不可少的一部分。不管是读书的时候学习的c,c++,工作的前学的java,现在学的Python,没学过的php和go,都有文件操作的模块以及库的支持,重要性毫无疑问。

学习文件操作是编程技能体系中不可或缺的一部分,它对于数据管理、程序间通信、系统维护等多个方面都具有重要意义。

  1. 数据持久化:程序运行过程中产生的数据,通过文件操作可以保存到磁盘上,实现数据的长期存储。这样即使程序关闭或系统重启,数据依然存在,保证了信息的持久性。
  2. 信息交换:文件是程序之间交换数据的一种常见方式。一个程序可以通过读取另一个程序写入的文件来获取数据,或者将自己的处理结果写入文件供其他程序使用,增强了软件之间的兼容性和协同工作能力。
  3. 配置与日志:许多应用程序会使用配置文件来存储设置信息,使得用户无需修改源代码即可调整程序行为。同时,通过记录日志文件,开发者可以追踪程序运行状态,便于调试和故障排查。
  4. 资源管理:在开发多媒体应用、网页服务或其他需要处理大量静态资源(如图片、视频、文档)的场景中,有效地读取、写入和管理这些文件资源是必不可少的技能。
  5. 提升编程能力:掌握文件操作能够加深对操作系统如何管理和访问文件系统的理解,这是编程基础中的重要一环。它涉及到路径管理、权限控制、缓冲区使用等概念,有助于培养良好的编程习惯和问题解决能力。
  6. 跨平台开发:了解不同操作系统(如Windows、Linux、macOS)下文件操作的差异,可以帮助开发者编写更加健壮、可移植的代码,适应多样化的开发环境。

文件读取是Python标准库就支持的操作,也就是说我们可以直接使用内置函数来进行文件的读取,市面上也许有第三方库支持更加细腻功能更多更简便的文件操作,但是今天我们只讲标准库中的操作。

废话不多说,进入正题。

文件路径

在将实际的操作之前,讲一下文件的相对路径和绝对路径。对后面操作文件时有一定的帮助。

在计算机文件系统中,文件路径是用来定位文件位置的字符串。

根据路径参照点的不同,文件路径主要分为两类:相对路径和绝对路径。

绝对路径(Absolute Path)
绝对路径是从文件系统的根目录(如 Windows 的盘符 C:,Linux 和 macOS 的 /)开始的完整路径,能够唯一确定文件的位置,不依赖于当前工作目录。
例如:

Windows: C: Users/Username/Documents/example.txt
Linux/macOS: /home/user/documents/example.txt

相对路径(Relative Path)
相对路径是相对于当前工作目录(即你当前所在的位置)的路径。使用相对路径时,文件的位置是相对于执行代码或命令时的工作目录来决定的。
例如:

如果当前目录是 /home/user/documents/,那么引用 example.txt 的相对路径只需写成 example.txt
或者 ./example.txt(. 表示当前目录)。
要访问同一级目录下的 pictures 文件夹里的 image.jpg,可以写成 pictures/image.jpg。
使用 … 可以向上一级目录移动,如从 /home/user/documents/ 访问 downloads 文件夹下的文件,则路径为 …/downloads/file.zip。

选择何时使用
绝对路径适用于需要明确指定文件位置,不受当前工作目录影响的场景,如配置文件中的资源路径、系统服务启动脚本等。
相对路径更适用于项目内部文件引用,特别是在代码或脚本中,因为它们往往与项目的结构紧密相关,且易于迁移和维护。
理解并恰当使用这两种路径类型,对于编写跨平台、易维护的代码至关重要。

文件读取

  1. 创建读取目标和读取模块。我先新建一个txt文件用作读取目标。同时新建一个文件模块,用于今天的学习。
    在这里插入图片描述

  2. 读取文件。
    在这里插入图片描述
    两行行代码,一行完成了文件的读取,一行完成了打印。注意我的文件内容是中文,所以指定了编码,不指定的话可能会报错。

    with open('test_file.txt', encoding="utf-8") as file_object:
        print(file_object.read())
    

    with:关键字with 在不再需要访问文件后将其关闭。通常在进行流操作的时候,会有open操作和对应的close操作,这种操作的目的是保证流能够正确的开启和关闭,当流未关闭时,再次访问可能出现未知的错误,甚至流不关闭本身就会导致问题。但是手动的close流,有一个问题就是并非在任何情况下都能轻松确定关闭文件的恰当时机,但通过使用with,可让Python去确定:你只管打开文件,并在需要时使用它,Python自会在合适的时候自动将其关闭。

    open()。这是Python中读取文件的函数。介绍一下open函数得入参:

  1. file (必填): 字符串类型,表示要打开的文件的路径和名称。
  2. mode (可选): 字符串类型,表示文件的打开模式。常见的模式有:
    2.1 ‘r’: 读取(默认)
    2.2 ‘w’: 写入,会覆盖原有文件内容
    2.3 ‘a’: 追加,在文件末尾添加内容
    2.4 ‘b’: 二进制模式
    2.5 ‘+’: 读写模式,可以与上述模式组合,如 ‘r+’, ‘w+’, ‘a+’
  3. encoding (可选): 字符串类型,指定文件的编码方式,如 ‘utf-8’, ‘gbk’。默认为 None,则使用系统默认编码。
  4. buffering (可选): 控制缓冲策略。默认为 -1,表示使用默认缓冲策略;0 表示不缓冲;大于 1 的整数表示缓冲区大小;1 表示行缓冲(对于文本模式)。
  5. errors (可选): 指定如何处理编码和解码错误,如 ‘strict’, ‘ignore’, ‘replace’ 等。
  6. newline (可选): 控制换行符的处理方式,如 ‘n’, ‘rn’, ‘’(读取时不转换,写入时不添加)。
  7. closefd (可选): 布尔值,对于特殊文件描述符是否关闭,默认为 True。
  8. opener (可选): 一个可调用对象,用于自定义文件打开方式。

在示例中,我们使用两个参数,必填的文件路径和选填的文件编码方式。文件路径因为我们是放在了项目目录里面。所以直接用的相对路径,当然我们也可以使用绝对路径。但是要注意的是Windows系统,在文件路径中使用的是反斜杠。

with open('D:\测试文件\test_file.txt', encoding="utf-8") as file_object:
    print(file_object.read())

在这里插入图片描述
使用绝对路径的方式,我们同样打开并读取了在D盘中的test_file.txt文件。

  1. 按行读取文件
    通过for循环,我们可以直接读取文件中的每一行的数据,并且将数据放到一个列表中进行存储。由于我们在文件中是本身就通过回车换行,所以读取的内容也带换行符,我们可以通过字符串去空白的函数去掉。
file_line_list_1 = []
file_line_list_2 = []
with open('test_file.txt', encoding="utf-8") as file_object:
    line_num = 0
    for line in file_object:
        line_num += 1
        print(f"我是第{line_num}行,内容是{line}")
        file_line_list_1.append(line)
        file_line_list_2.append(line.rstrip())
print(file_line_list_1)
print(file_line_list_2)

在这里插入图片描述

  1. 读取指针
    我们在分行读取完文件后,在进行打印读取内容的操作,发现打印的内容是空的,为什么?
with open("D:\\测试文件\\test_file.txt", encoding="utf-8") as file_object:
    for line in file_object:
        print(line)
    print("============分隔===========")
    print(file_object.read())

在这里插入图片描述

大家要注意,Python读取文件的时候有一个指针,读取以后指针会停在最后读取的位置,在上述代码中,我们分行读取后,指针已经停留到了最后一行,再进行读取的时候,就读取到了空的内容。

这种情况怎么办呢?使用seek()函数,可以修改指针位置。
seek()函数接收两个参数:

offset:偏移量,即从参照点移动的字节数。
whence:可选参数,默认值为 0,表示从文件开头开始计算偏移量;如果为1,则表示从当前位置开始计算;如果为 2,则表示从文件末尾开始计算。

所以我们在第二次读取前调用一次seek函数即可。

with open("D:\\测试文件\\test_file.txt", encoding="utf-8") as file_object:
    for line in file_object:
        print(line)
    print("============分隔===========")
    file_object.seek(0)
    print(file_object.read())

在这里插入图片描述
文件内容成功读取并打印。

文件写入

在介绍open函数入参的时候,其实已经讲到了怎么写入文件。通过open函数的传参。
在Python中,文件就是打开和关闭,区别在打开的模式是读取还是写入又或者是其他模式。

with open('test_file.txt', mode="w", encoding="utf-8") as file_object:
    file_object.write("给测试文件写点东西")

在这里插入图片描述
文件执行在运行框没有信息,但是打开目标文件发现,内容已经写入。注意前面已经说过,“w"是覆盖模式。
在这里插入图片描述
如果你想追加内容,使用mode参数值应该设置为"a”。附加模式下,如果你输入的文件不存在,还会给你创建一个文件。

with open('test_file.txt', mode="a", encoding="utf-8") as file_object:
    file_object.write("给测试文件写点东西")

在这里插入图片描述
可以看到直接拼接在了最后一行上面,如果你想换下一行拼接,应该怎么办呢?加上换行符,就这么简单!

多次写入

其实多次写入相比和单次相比,重复调用write函数即可。

with open('test_file.txt', mode="a", encoding="utf-8") as file_object:
    file_object.write("\n给测试文件写一点东西")
    file_object.write("\n给测试文件写两点东西")
    file_object.write("\n给测试文件写三点东西")
    file_object.write("\n给测试文件写四点东西")
    file_object.write("\n给测试文件写五点东西")
    file_object.write("\n给测试文件写六点东西")

在这里插入图片描述
多行写入也成功了,是不是很简单。

结尾

文件的读取和写入也讲到这里,只是初级的应用,应对大部分需要操作文件的场景就够了,大家要好好练习。进阶阶段的知识,不敲几次加深印象等于白学了。

点赞收藏关注,感谢支持!!!

作业

  1. 读取文件。
  2. 逐行读取并进行添加条件语句进行输出。
  3. 写入文件,更改文件信息。
  4. 使用附加模式,创建一个文件。
Python读写XML文件:全面解析与技术实现 自描述性:XML文件通过标签和属性描述数据结构和内容,具有良好的可读性。层次结构:XML文件具有树形结构,可以表示复杂的嵌套关系,非常适合描述具有层次关系的数据。平台无关性:XML文件是纯文本格式,可以在不同的平台和编程语言之间进行无缝传输。Python提供了多种处理XML文件的库,从轻量级的到功能强大的lxml,每个库都有其独特的优势和适用场景。在实际项目中,开发者应根据XML文件的复杂性、项目需求以及性能要求选择合适的工具。 阅读详情

相关推荐

Python编程基础13:文件读写操作

文章目录一、文件概念二、打开文件(一)文件打开函数 - open()1、函数作用2、函数调用格式3、案例演示(1)以默认方式(r - 只读)打开文件(2)以只写方式(w - 只写)打开文件(3)以追加方式(a - 追加)打开文件(4)以可写可读方式(w+)打开文件 一、文件概念 文件是操作系统管理和存储数据的一种方式。Python使用内置的文件对象来处理文件。 在D:/python_work目录里创建lesson13目录,在该目录下创建一个文本文件 - test.txt 二、打开文件 (一)文件打开

howard2005的专栏 1791

Python读写文件的15个高效技巧

通过实践这些案例和技巧,你将能够更熟练地掌握Python中的文件读写操作,提升你的编程效率和项目处理能力。函数跳过CSV文件的第一行(通常是标题行),确保数据处理的一致性和准确性。:对于大数据集,考虑使用生成器或迭代器,而不是一次性加载整个文件到内存中。语句打开文件可以确保文件在操作完成后被正确关闭,即使过程中发生错误。处理从CSV文件读取的数据时,可能需要进行一些清洗和格式调整。语句处理文件操作中可能出现的异常,如文件不存在或损坏。不仅可以重命名文件,还可以将文件移动到不同的目录。

m0_62283350的博客 1550

知识导航神器:Obsidian Breadcrumbs 插件全攻略

Parent: 插件Child: Breadcrumbs 用法这样,它就能识别出你和其他笔记的关系。

m0_73735578的博客 1630

Python学习:Python读写文件的15个高效技巧

通过实践这些案例和技巧,你将能够更熟练地掌握Python中的文件读写操作,提升你的编程效率和项目处理能力。函数跳过CSV文件的第一行(通常是标题行),确保数据处理的一致性和准确性。:对于大数据集,考虑使用生成器或迭代器,而不是一次性加载整个文件到内存中。语句打开文件可以确保文件在操作完成后被正确关闭,即使过程中发生错误。处理从CSV文件读取的数据时,可能需要进行一些清洗和格式调整。假设你有一个日志文件,需要统计其中特定关键词的出现次数。语句处理文件操作中可能出现的异常,如文件不存在或损坏。

2301_78150559的博客 639

LabVIEW电压信号采集系统:从零搭建到科研实战

本文详细介绍了如何从零开始搭建一个基于LabVIEW的电压信号采集系统。内容涵盖硬件选型(如NI USB-6002数据采集卡)、软件环境配置、核心程序开发(包括多通道同步采集、数据自动保存)以及高级功能优化。系统支持自定义采样率与时长,并提供了完整的LabVIEW程序框图和配套的Python数据分析脚本,旨在帮助科研人员和工程师快速构建稳定、高效的专属数据采集方案,提升实验自动化水平。

gold8的专栏 462

STM32 无线充电接收端硬件设计:从 LC 谐振到 PWM 控制的 5 大关键电路解析

本文深入解析了基于STM32的无线充电接收端硬件设计,重点探讨了LC谐振倍压整流、INA282电流采样、IR2104S半桥驱动、超级电容保护及STM32最小系统等5大关键电路。针对超级电容的恒功率充电需求,详细介绍了PID控制算法优化及PCB设计实战要点,帮助工程师提升无线充电系统的效率和可靠性。

weixin_31774841的博客 384

【人生苦短,我学 Python】进阶篇——文件处理(Day15)

一份适合小白快速入门的《Python修炼计划》!

不积跬步,无以至千里! 4277

黑马程序员Pink的javaScript课程APIday4

本文摘要:介绍了JavaScript中日期对象的实例化方法(有参/无参)及三种获取时间戳的方式。讲解了DOM节点操作,包括节点查找(父、子、兄弟节点)、增加/克隆/删除节点的方法。详细说明了移动端touch事件和Swiper插件的使用,包括自动播放和小圆点配置。最后提及学成在线案例中表单验证和取消默认跳转的实现。

JLY19970726的博客 825

【Python】读写文件

buffering为可选参数,用于指定读写文件的缓冲模式,值为0表示不缓存,值为1表示缓存,如果值大于1,则表示缓冲区的大小,默认为缓存模式。使用read()方法读取文件时,是从文件的开始进行读取的,如果想要读取中间某个片段的内容,可以先使用文件对象的seek()方法将文件的指针移到指定的位置,然后再使用read()方法进行读取内容。它不依赖于当前工作目录。Python中的os模块提供了rename()函数,可以用来重命名文件和目录,如果指定的路径是文件,则重命名文件,如果指定的路径是目录,则重命名目录。

2401_86008949的博客 1816

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 954

风-车-桥耦合随机振动预测框架:从物理模型到高效代理

本文提出了一种风-车-桥耦合随机振动预测的混合框架,结合物理模型与代理模型实现高效计算。该框架的核心数学本质是时变参数-随机激励-高维动力系统,主要解决三大计算难点:自由度规模悬殊、时变特性和随机性传播。系统采用分层解耦-代理加速的技术路线,底层基于物理模型建立车辆运动方程和桥梁运动方程,上层通过深度学习代理实现随机激励到响应的端到端映射。文中详细介绍了随机激励建模(包括脉动风速和路面不平度)、子系统建模、耦合求解方法,并提供了可运行的Python代码实现。该框架可显著提高风-车-桥系统随机振动分析的效率,

huanghm88的专栏 102

Python学习笔记15_文件I/O

Python学习笔记15_文件I/O 文章目录Python学习笔记15_文件I/O1、File 方法1.1、open() 方法1.2、mode 参数2、file 对象 1、File 方法 1.1、open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,如果该文件无法被打开,会抛出 OSError; 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。 open() 函数常用形式是接收两个参数:文件名(file)和模式(mode): open(fil

哦豁灬 1万+

【Python3教程】Python3高级篇之uWSGI 安装配置

本文介绍了在Python 3环境中安装和配置uWSGI的完整流程,涵盖基本安装、Flask/Django应用部署、Nginx集成以及systemd管理等关键环节。主要内容包括:uWSGI的安装前提条件,创建简单WSGI应用,编写uWSGI配置文件(.ini格式),与Nginx配合实现生产环境部署,以及使用systemd实现服务管理。文章还提供了常见Web框架(Flask、Django)的部署示例和高级配置建议,如负载均衡、HTTPS设置等。最后列出了权限、端口占用等常见问题的解决方案,为开发者提供了一套完整

No8g攻城狮的博客 438

Python基本语法(五)——文件读写

文件读写包括文件读取和写入文件。

XYY_Nico的博客 6516

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办?

部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅

XiaoqiangClub的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python文件读写操作

Python文件读写操作 工作中,对文件的读写是非常频繁的,不管是从文件中读取数据,还是将数据写到文件中,都很频繁。本文介绍Python中的文件读写操作方法。 一、文件打开与关闭方法 在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。 open(文件名,访问模式) 访问模式: r以只读方式打开文件,文件的指针将会放在文件的开头。打开文件后,从文件的开...

weixin_43790276的博客 2531

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Python基础-第15章-文件读写】

第15章_文件读写 内容概述: 1、编码格式介绍 2、文件的读写原理 3、文件读写操作 4、文件对象常用的方法 5、with语句 6、目录操作 一、编码格式 常见的字符编码格式 Python的解释器使用的是Unicode(内存) .py文件在磁盘上使用UTF-8存储(外存) 一般输入:适用UTF-8编码格式 在文件开头加#encoding=GBK:适用ANSI GB:国家标准,即简体标准字库 ANSI:是一种字符代码,为使计算机支持更多语言,通常使用 0x80-0xFF(十进制为128-

浩安的博客 830

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python读写音频文件小结

在语音处理中,音频文件读写是基本操作。 然而读写方式乃至归一化处理的多样化,有可能导致后续处理的偏差乃至错误。 本文汇集实践中所遇的一些方法,并参考了其他文章,确保读写操作的准确性和一致性。 前置条件        本文以实践中常见的音频文件参数(wav格式,PCM编码,单通道,采样率16KHz,位深16bit)为例,如果参数不同需做对应调整。 一. 文件读取 1. librosa import librosa wav_path='' sample_r.

lujian1989的专栏 2万+

Python读写XML文件的技术指南

在软件开发中,XML(可扩展标记语言)是一种广泛用于数据存储和交换的格式。Python作为一门强大而灵活的编程语言,提供了许多库和工具来处理XML文件。本篇技术博客将介绍如何使用Python读写XML文件,并提供具体的代码实例和解析。

一键难忘的博客 5248

3种方法实现Python进行读写Excel文件

Python作为一种脚本语言相较于shell具有更强大的文件处理能力,一般shell在处理纯文本文件时较为实用,而对特殊文件的处理如excel表格则Python会更得心应手,主要体现在它可以调用很多第三方功能包来实现我们想要的功能,Python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 用xlrd和xlwt进行excel读写; 用openpyxl进行excel读写; 用p...

Hello,world! 1529

Python文件与目录管理的15个技巧

掌握文件与目录管理是Python编程中的基础也是关键技能。通过上述技巧和最佳实践,你不仅能够有效地组织和操作文件,还能在遇到复杂任务时游刃有余。好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请吧!

wenjie20070212的博客 1185

python读写文件实例_Python 实例:读写文件

原标题:Python 实例:读写文件读写文件是最常见的IO操作。内置了读写文件的函数,用法和的读写文件非常类似。在磁盘上读写文件的功能都是由提供的,现代不允许普通的程序直接操作磁盘,所以,读写文件就是请求打开一个文件对象(通常称为文件描述符),然后,通过提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。1、Project分析Python使用内置函数open来读写文...

weixin_39907658的博客 124

Python定位及修改文件读写位置方法介绍

Python定位及修改文件读写位置方法介绍,Python提供用于获取文件读写位置以及修改文件读写位置的方法tell()方法与seek()方法。当你导入一个模块,Python解析器对模块位置的搜索:当前目录;如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录;如果都找不到,Python会察看默认路径。

2201_75362610的博客 1897

.npy文件_python——文件读写

一:Python中读写文件的方法1.open()函数open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)file : 是一个 path-like object,表示将要打开的文件的路径,可以是绝对路径也可以是相对路径,也可以是要被封装的整数类型文件描述符。如果...

weixin_39942992的博客 1524

Python课堂22——文件读写

这是我们基础课程的倒数第二节课,主要讲述一些与文件操作相关的操作,这一部分也将是之后进阶Python课程的基础。提示:以下是本篇文章正文内容,下面案例可供参考这一节的内容比较多,大家下去要多花一点时候来进行学习和记忆!天才是百分之一的灵感加上百分之九十九的努力。

ZxVSaccount的博客 1029

Python 学习笔记15 文本 - 读写

在我们的编程过程中,我们经常需要对文件进行读写操作。 在Python中,对文本的读写非常的方便,只需要简单的几行代码就可以实现。 我们首先新建一个文本文件"Text.txt", 里面有很多的内容,我们尝试将其全部读出来 with open('Text.txt') as file_object: contents = file_object.read() pr...

weixin_30721899的博客 129
上一篇: 【java问答小知识15】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点
下一篇: 【java问答小知识16】一些Java基础的知识,用于想学习Java的小伙伴们建立一些简单的认知以及已经有经验的小伙伴的复习知识点
明月望秋思
博客等级 码龄6年 1931粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值