Python教程:文件I/O的用法

Python语言 的输入/输出流(I/O Streams) 了解输入/输出流的基础知识是掌握Python编程的重要步骤。本文介绍了Python中的标准I/O、文件I/O、JSON和CSV的处理、网络I/O、多线程和异步I/O等内容。文件I/O操作是日常开发中最常见的任务之一,通过文件完成数据的存储和读取。异常处理确保了程序在出现错误时的稳定性。JSON和CSV是两种重要的数据格式,通过Python的标准库可以轻松处理。网络编程和异步I/O为实现高效的数据传输和处理提供了强大的支持。 阅读详情

本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档。

1.打印到屏幕

最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式。此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

print ("Python 是一个非常棒的语言,不是吗?")

你的标准屏幕上会产生以下结果:

Python 是一个非常棒的语言,不是吗?

2.读取键盘输入

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下:

  • raw_input (3.5.1版本已不支持此方法)
  • input
input函数

input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。

str = input("请输入:");
print("你输入的内容是: ", str)

这会产生如下的对应着输入的结果:

请输入:[x*5 for x in range(2,10,2)]
你输入的内容是:  [10, 20, 30, 40]

3.打开和关闭文件

现在,您已经可以向标准输入和输进行读写。现在,来看看怎么读写实际的数据文件。

Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。

open 函数

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

语法:

file object = open(file_name [, access_mode][, buffering])

各个参数的细节如下:

  • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  • access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
  • buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

不同模式打开文件的完全列表:

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

4.File对象的属性

一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。

以下是和file对象相关的所有属性的列表:

属性描述
file.closed返回true如果文件已被关闭,否则返回false。
file.mode返回被打开文件的访问模式。
file.name返回文件的名称。
file.softspace如果用print输出后,必须跟一个空格符,则返回false。否则返回true。

如下实例:

# 打开一个文件
fo = open("foo.txt", "wb")
print("文件名: ", fo.name)
print("是否已关闭 : ", fo.closed)
print("访问模式 : ", fo.mode)
print("末尾是否强制加空格 : ", fo.softspace)

以上实例输出结果:

文件名:  foo.txt
是否已关闭 :  False
访问模式 :  wb
末尾是否强制加空格 :  0
close()方法

File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。

语法:

fileObject.close()

例子:

# 打开一个文件
fo = open("foo.txt", "wb")
print("文件名: ", fo.name)
 
# 关闭打开的文件
fo.close()

以上实例输出结果:

文件名:  foo.txt

读写文件:

file对象提供了一系列方法,能让我们的文件访问更轻松。来看看如何使用read()和write()方法来读取和写入文件。

write()方法

write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

Write()方法不在字符串的结尾不添加换行符(‘\n’):

语法:

fileObject.write(string)

在这里,被传递的参数是要写入到已打开文件的内容。

例子:

# 打开一个文件
fo = open("foo.txt", "wb")
fo.write( "www.runoob.com!\nVery good site!\n");
 
# 关闭打开的文件
fo.close()

上述方法会创建foo.txt文件,并将收到的内容写入该文件,并最终关闭文件。如果你打开这个文件,将看到以下内容:

$ cat foo.txt 
www.runoob.com!
Very good site!
read()方法

read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

语法:

fileObject.read([count]);

在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
例子:

这里我们用到以上创建的 foo.txt 文件。

# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10);
print "读取的字符串是 : ", str
# 关闭打开的文件
fo.close()

以上实例输出结果:

读取的字符串是 :  www.runoob

5.文件定位

tell()方法告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

例子:

就用我们上面创建的文件foo.txt。

# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10);
print("读取的字符串是 : ", str)
 
# 查找当前位置
position = fo.tell();
print("当前文件位置 : ", position)
 
# 把指针再次重新定位到文件开头
position = fo.seek(0, 0);
str = fo.read(10);
print("重新读取字符串 : ", str)
# 关闭打开的文件
fo.close()

以上实例输出结果:

读取的字符串是 :  www.runoob
当前文件位置 :  10
重新读取字符串 :  www.runoob

6.重命名和删除文件

Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。

要使用这个模块,你必须先导入它,然后才可以调用相关的各种功能。

rename()方法:

rename()方法需要两个参数,当前的文件名和新文件名。

语法:

os.rename(current_file_name, new_file_name)

例子:

下例将重命名一个已经存在的文件test1.txt。

import os
 
# 重命名文件test1.txt到test2.txt。
os.rename( "test1.txt", "test2.txt" )
remove()方法

你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。

语法:

os.remove(file_name)

例子:

下例将删除一个已经存在的文件test2.txt。

import os
 
# 删除一个已经存在的文件test2.txt
os.remove("test2.txt")

7.Python里的目录:

所有文件都包含在各个不同的目录下,不过Python也能轻松处理。os模块有许多方法能帮你创建,删除和更改目录。

mkdir()方法

可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。

语法:

os.mkdir("newdir")

例子:

下例将在当前目录下创建一个新目录test。

import os
 
# 创建目录test
os.mkdir("test")
chdir()方法

可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。

语法:

os.chdir("newdir")

例子:

下例将进入"/home/newdir"目录。

import os
# 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441 
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")
getcwd()方法:

getcwd()方法显示当前的工作目录。

语法:

os.getcwd()

例子:

下例给出当前目录:

import os
 
# 给出当前的目录
os.getcwd()
rmdir()方法

rmdir()方法删除目录,目录名称以参数传递。

在删除这个目录之前,它的所有内容应该先被清除。

语法:

os.rmdir('dirname')

例子:

以下是删除" /tmp/test"目录的例子。目录的完全合规的名称必须被给出,否则会在当前目录下搜索该目录。

import os
 
# 删除”/tmp/test”目录
os.rmdir( "/tmp/test"  )

8.文件、目录相关的方法

三个重要的方法来源能对Windows和Unix操作系统上的文件及目录进行一个广泛且实用的处理及操控,如下:

  • File 对象方法: file对象提供了操作文件的一系列方法。
  • OS 对象方法: 提供了处理文件及目录的一系列方法。
Python中的文件I/O操作:常见问题与解决方案 通过本文的介绍,相信您对Python中的文件I/O操作常见问题与解决方案有了更深入的了解。在实际编程中,遇到文件I/O问题时,可以根据本文提供的解决方案进行排查和修复。同时,我们也提供了代码示例,帮助您更好地理解和应用这些解决方案。在编写文件I/O相关代码时,请确保遵循最佳实践,如使用with语句来自动关闭文件,避免不必要的错误和资源浪费。 阅读详情

相关推荐

Python 文件 IO 操作详解

Python 文件 IO 操作详解1、文件 IO 常用操作2、文件打开操作2.1 打开命令2.2 命令参数2.2.1 路径2.2.2 mode2.2.3 buffering 缓冲区2.2.4 encoding 编码,仅文本模式使用2.2.5 errors2.2.6 newline2.2.7 closefd3、文件其他命令3.1 read3.2 write3.3 close3.4 其它命令4、文件指针5、上下文管理6、其它课堂笔记(描述不尽准确) 1、文件 IO 常用操作 2、文件打开操作 2.1 打开命令

weixin_44983653的博客 3849

Python进阶——文件及IO操作

参考:https://www.bilibili.com/video/BV1wD4y1o7AS?p=157&spm_id_from=pageDriver&vd_source=541ccdf13b275290c43166e1762b6954

m0_63997099的博客 1145

Python 中的 `selectors`:构建高效的 I/O 复用程序

在多任务程序中,我们经常需要同时处理多个 I/O 操作,例如监听多个网络连接、读取多个文件或处理用户输入。传统的解决方案是为每个 I/O 操作创建一个线程或进程,但这会导致资源浪费、上下文切换频繁以及管理复杂。I/O 复用允许程序通过单个线程或进程同时监控多个 I/O 源,当某个 I/O 源准备好时(例如数据可读或可写),程序可以高效地处理它。I/O 复用的核心思想是将多个 I/O 源注册到一个监控器中,当任何一个 I/O 源准备好时,监控器会通知程序进行处理。

蜗牛沐雨 1476

Python的文件操作——IO

解释:一个类对象实现了__enter__()与__exit__()方法,则这个类对象遵守了上下文协议,该类的实例对象就是上下文管理器,如下图的 open() 就是上下文管理器,with 缩进内的都为 with 语句体。Python解释器在运行.py文件时用到操作系统(OS)及其资源,.py文件里的代码就是通过调用才做系统操作磁盘上的文件(及读写磁盘里的文件)首先是将原文件读取,写入到目标文件,有28万多条数据,就需要创建15个文件进行写入,这可以通过循环是实现。创建:将数据写入新文件(程序->文件)

m0_73716246的博客 506

146、Python数组I/O秘籍:文件读写与数据交换技巧

Python数组I/O秘籍:文件读写与数据交换技巧

silenceallat的博客 940

Python I/O 库【输入输出】全面详解

资源管理始终使用with语句确保资源释放长时间打开的文件定期flush()使用作为with的备选编码处理或二进制数据坚持使用b模式性能关键点避免频繁小量写入,使用缓冲减少系统调用次数(批量操作)高级技巧内存映射处理超大文件异步 I/O 处理高并发文件锁保证多进程安全调试技巧使用追踪指针位置检查os.stat()获取文件状态监控io模块的掌握这些 I/O 技术,可高效处理从简单文本到 TB 级数据集的各类场景。

记录点滴 711

Python 文件I/O

本章只讲述所有基本的 I/O 函数,更多函数请参考Python标准文档。

Aforxiaoxie 1217

微信本地数据解密实战:从AES加密原理到EnMicroMsg.db恢复指南

数据加密是保障信息安全的核心技术,其中对称加密算法AES因其高效可靠,被广泛应用于各类本地数据保护场景。其原理是通过特定密钥对数据进行混淆转换,确保未经授权者无法读取原始内容。在移动应用领域,本地数据库加密对于保护用户隐私、防止数据泄露具有重要价值。微信作为国民级应用,对其本地存储的聊天记录数据库(EnMicroMsg.db)采用了基于设备标识和用户UIN生成的AES-256-CBC加密方案。理解这一机制,不仅有助于在合法合规前提下进行个人数据备份与恢复,也为开发者进行客户端安全分析、兼容工具开发提供了基础

weixin_30764883的博客 565

深入探索 Python 的 `selectors` 模块:I/O 多路复用的基石

selectors模块是 Python 标准库中一个强大且底层的工具,用于实现。在现代网络编程中,尤其是在构建高性能并发服务器时,它扮演着至关重要的角色。简而言之,它允许单个程序,并在任何通道准备好进行读写操作时得到通知,而无需为每个通道分配一个独立的线程或进程。

蜗牛沐雨 1732

复古与新生:老毛子Padavan固件在旧设备上的现代化应用之旅

本文探讨了如何通过刷入Padavan固件,让小米路由器3G(R3G)等老旧设备重获新生,实现现代化应用。详细介绍了从硬件潜力分析、智能家居中枢搭建,到轻量级服务器部署和网络功能扩展的全过程,为技术爱好者提供了一条低成本、高性能的设备改造之路。

k8s6orchestrator的博客 1060

GN算法边介数计算优化指南:如何提升大规模社交网络分析效率

本文深入探讨了GN算法在大规模社交网络分析中的核心瓶颈——边介数计算,并提供了从算法优化到工程部署的完整性能提升方案。通过引入Brandes算法、并行计算、增量更新及分布式处理等策略,有效解决了传统GN算法在处理百万级网络时效率低下的问题,为社交网络社区划分等实际应用提供了高效解决方案。

weixin_29196613的博客 485

Python 文件 I/O 操作

同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容。tips: 文件读取完后,记得close关闭文件对象,不然文件会被一直占用,读取到某一位置时,下次会从上次读取的位置继续读取。用途: 这个代码可以用于创建一个新文件并写入一些文本,例如用于测试或初始化文件。实例:打开名为"test.txt"的文件,向其中追加写入两行文本,然后关闭文件。实例:创建一个名为"test.txt"的文件,并向其中写入两行文本。的文件,读取其中的每一行,并将它们存储在一个名为。: 读取文件的所有行,并返回一个列表。

2201_75479454的博客 1078

PCIe中ACS知识小记

虚拟机内部的访问数据显而易见是带的GPA地址。而目前几乎所有的PCIe 设备都带ACS control,所以它们可以单独assign给不同的VM,但是随之而来的就是即使两个GPU同时assign给同一个VM,由于ACS的存在,他们之间也不会有真正的物理层面的P2P访问。每一个TLP都自带一个address(寻址类TLP),同时每一个endpoint,PCIe switch都自带一段BIOS配置的地址空间范围,一旦这个TLP的address落入某个设备的地址范围,那么这个TLP就属于这个设备并消费。

Summer的博客 5077

Python教程:精简概述I/O模型与I/O操作

Python教程:精简概述I/O模型与I/O操作 一. I/O 模型 1. 特指 Linux 下的网络 IO,一般分类: 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) IO多路复用(IO multiplexing) 信号驱动IO(signal driven IO) 异步IO(asynchronous IO) 2. 一个网络 I/O 涉及两个系统对象: 应用进程(Process/Thread) 系统内核(Kernel) 3. 一个 read 操作会经历两个

码蝗的博客 393

C#上位机多PLC多协议开发思路:10年老工控师拆解实战方案,避坑90%的问题(附代码框架)

是否连接成功数据地址(如“DB1.DBW0”“D100”“4x0001”)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 946

“软开关”硬技术!ZVS和ZCS到底谁更牛?看完这个例子你就懂了!

❌ ZVS 和 ZCS 是万能的?→ 不,它们都有实现条件,谐振参数选不好照样硬拐弯!❌ 只要有谐振就一定ZVS?→ 不,一定要设计合适的死区时间和负载条件才行!ZVS 是让电压先“冷静”,ZCS 是让电流先“退场”。一个是开门不撞墙,一个是关门不甩门。懂了它们,功率设计就是在跳华尔兹而不是打架!💃🔌。

weixin_43199439的博客 1233

Python mmap:使用内存映射改进文件 I/O

Pythonmmap提供内存映射文件输入和输出 (I/O)。它允许您利用较低级别的操作系统功能来读取文件,就好像它们是一个大字符串或数组一样。这可以在需要大量文件 I/O 的代码中提供显着的性能改进。

yizhiniu_xuyw的专栏 3142

【Mini KITTI】KITTI数据集简介 — Mini KITTI

为了快速进行算法调试、训练、评估和验证,以及快速下载,制作了一个mini kitti数据集,数据集的文件目录结构与完整KITTI数据集保持一致。其中,小型的KITTI数据集,即 mini kitti保存了20个训练样本和5个测试样本。下载地址为:。 关于KITTI各个部分的介绍请分别参考以下内容: ...

叶子的博客 7533

Python中文件的读、写、关闭操作详细介绍,I/O的底层原理概述

Python中的文件I/O是处理文件输入和输出的过程。文件I/O操作包括打开文件、读取文件内容、写入文件以及关闭文件等。Python提供了多种方式来执行这些操作,主要通过内置的open函数和文件对象的方法来实现。

ydl1128的博客 1713

Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十九):微服务实战——Boot 4 + Spring Cloud 2026.x,构建高并发电商分布式系统

Component@Slf4j@Autowired// 白名单路径@Override// 白名单放行// 提取Token// 传递用户信息到下游服务.mutate().build();@Override// 最高优先级if (bearer!@Component技术点Boot 3 时代Boot 4 时代提升线程模型平台线程池(200线程上限)虚拟线程(百万级并发)50x+服务通信。

qq_17204557的博客 184

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

023-Python 文件I/O

Python 的文件操作功能非常强大且灵活,适用于各种场景,包括处理文本文件、二进制文件,以及操作系统文件管理功能。Python 提供了强大的文件操作功能,支持读取和写入文本文件、二进制文件等,以下是详细的讲解和示例。通过灵活运用 Python 的文件 I/O 功能,可以高效地完成文件读取、写入、管理和各种复杂的操作,是日常编程中的重要技能之一!的进一步扩展,包括高级功能、性能优化、异常处理,以及文件操作的实际应用案例。模块,可以将文件映射到内存中,以实现文件的高效访问。如果文件使用其他编码,如。

小宝哥Code的专栏 824

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Python学习】Python学习16- 文件I/O

本章节主要说明Python基本的 I/O 函数。

qq_43238568的博客 1062

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

掌握Python文件I/O操作:从新手到高手的必经之路

根据统计,程序员在项目中花费的时间中,约有20%是用于文件I/O操作的。在这篇文章中,我们将深入探讨Python文件I/O操作的基本概念、读写文件的方法、常用文件格式的处理,以及新手容易踩坑的点。无论你是刚入门的程序员,还是希望提升技能的开发者,这里都有你需要的实用技巧和独特见解。通过本文的学习,我们已经掌握了Python文件I/O操作的基本概念、读写文件的方法、常用文件格式的处理以及新手容易踩坑的点。如果你觉得这篇文章对你有帮助,欢迎订阅我们的内容,分享给你的朋友,或者在评论区留下你的想法!

yfmsx的博客 1233

Python文件I/O操作详解

请注意,如果文件是以文本模式打开的(即没有使用'b'模式),则写入的数据必须是字符串。一旦我们打开了文件,就可以使用各种方法来读取文件的内容。使用try-except块处理异常:当进行文件I/O操作时,可能会发生各种异常,如文件不存在、没有权限访问文件等。关闭文件:虽然使用with语句可以自动关闭文件,但在不使用with语句的情况下,一定要记得在使用完文件后关闭它。检查文件是否存在:在尝试打开文件之前,可以使用os.path.exists()函数来检查文件是否存在。'x':如果文件已存在,则会发生错误。

LesterWalkley的博客 708

I/O理论-1

TextIOBase ABC是 IOBase 的另一个子类,它处理字节表示文本的流,并处理字符串之间的编码和解码。由于要打印的参数会被转换为文本字符串,因此print()不能用于二进制模式的文件对象。所有流对提供给它们的数据类型都很敏感。1、print()函数可以输出一个值,也可以同时输出多个值,如果输出多个值,这多个值之间用半角逗号隔开;所有非关键字参数都会被转换为字符串,并会被写入到流,以sep分割,并在末尾加上end。三种主要的 I/O类型分别为: 文本 I/O, 二进制 I/O 和 原始 I/O。

qq_42563807的博客 1032
上一篇: python中lambda、yield、map、filter、reduce的使用
下一篇: Python中使用concurrent执行多进程任务
Python程序u猿
博客等级 码龄5年 622粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值