文件操作及练习

Python文件操作与异常处理编程练习 本文提供了多个Python编程练习,涵盖文件读写、异常处理、字符串处理等基础编程技能。通过示例代码,讲解了如何打开和操作文件、处理IOError和ValueError异常、读取和写入数据、处理用户输入等常见任务。适合初学者巩固Python基础编程能力。 阅读详情
引言

最常用的文件存储文件格式:txt、csv

  • 到目前为止,我们做的一切操作,都是在内存里进行的,这样会有什么问题吗?如果一旦断电或发生意外关机了,那么你辛勤的工作成果将瞬间消失。是不是感觉事还挺大的呢?现在你是否感觉你的编程技巧还缺了点什么呢?是的,我们还缺少将数据在本地文件系统进行持久化存储的能力,白话讲就是文件的读写能力。

文件新建

x,新建(特殊的写入方式)。如果文件存在则报错,如果不存在就新建文件,然后写入内容,比w模式更安全,不会清空已经存在的文件的内容。

fp = open('hello.txt', 'x')  # 新建文件,然后写入内容
fp.write('hello Tom and jay')  # 表示往新建的文件fp里写入内容为'hello Tom and jay!'
fp.close()  # 关闭文件fp。
文件打开

语法:f = open(filename, mode)

fp = open('hello.txt', 默认为'r'也可以是'w'或'a'或'x'或'b'或'+')  # 打开文件,open函数会返回一个文件句柄/文件描述符(如fp),文件句柄/文件描述符表示所打开的文件(如open('hello.txt', 'w'))
  • Python内置了一个open()方法,用于对文件进行读写操作。使用open()方法操作文件就像把大象塞进冰箱一样,可以分三步走,一是打开文件,二是操作文件,三是关闭文件。

  • 文件句柄/文件描述符

    • open()方法的返回值是一个file对象,可以将它赋值给一个变量,这个变量就是所谓的文件句柄(以前叫文件描述符)。

    • file对象:

      • 可以调用read()和write()方法,对打开的文件进行读写操作。

  • open方法的语法

    • f = open(filename, mode)

    • f = open(filename, mode,encoding='UTF-8')

      • filename:

        • 一个包含了你要访问的文件名称的字符串值,通常是一个文件路径。

        • 文件路径作用:定位到指定文件

      • mode:

        • 打开文件的模式(权限),有很多种,默认是只读方式r。

  • 文件打开的模式:

  • fp = open('hello.txt', 'w')  # 打开文件,open函数会返回一个文件句柄/文件描述符(如fp),文件句柄/文件描述符表示所打开的文件(如open('hello.txt', 'w'))
    fp.write('hello Tom and jay')  # 通过文件句柄fp调用write函数。表示往打开的文件fp里写入内容为'hello Tom and jay!'
    fp.close()  # 关闭文件fp。
    文件写入

    w,只写。如果文件不存在,新建文件然后写入;如果存在,先清空文件内容,再写入。不安全的写入方式,会清空原来的内容。

    fp.write('内容'),调用写入操作的方法,对打开的文件进行写入操作

  • fp.write('hello Tom and jay')  # 表示往打开的文件fp里写入内容为'hello Tom and jay!'
    文件关闭
    fp.close()  # 关闭文件fp。
    文件读取

    r,只读。默认模式,如果文件不存在就报错,存在就正常读取。

    fp.read() # 调用读取操作的方法,对打开的文件进行读取操作。read 读取文件里所有的数据;

    fp.readlines() # 调用读取操作的方法,对打开的文件进行读取操作。read 读取文件里每行数据,并返回成一个列表;

    text = fp.readline() # 调用读取操作的方法,对打开的文件进行读取操作。 read 读取文件里第一行数据

  • fp = open('hello.txt', 'r')
    text = fp.read()  # read 读取文件里所有的数据,返回:
    # Hello Tom  and jay
    # Hwo are you?
    # Fine, and you ?
    # I'm fine too,thank you !
    print(text)
    fp.close()
    
    fp = open('hello.txt', 'r')
    text = fp.read(7)  # read 读取文件里指字符数(如7个字符)的数据,返回:Hello T
    print(text)
    fp.close()
    
    fp = open('hello.txt', 'r')
    text = fp.readlines()  # read 读取文件里每行数据,并返回成一个列表['Hello Tom and jay\n', 'Hwo are you?\n','Fine, and you ?\n', "I'm fine too,thank you !"]
    print(text)
    fp.close()
    
    fp = open('hello.txt', 'r')
    text = fp.readline()  # # read 读取文件里第一行数据,返回:Hello Tom and jay
    print(text)
    fp.close()
    文件追加

    a,追加(特殊的写入方式)。如果文件不存在,新建文件,然后写入;如果存在,在文件的最后追加写入。

  • fp = open('hello.txt', 'a')  # 打开文件
    fp.write('hello Tom and jay')  # 表示往打开的文件fp里追加写入内容为'hello Tom  and jay!'
    fp.close()  # 关闭文件fp。

  • 常规文件打开模式操作演示

    • b模式:

      • 二进制模式,通常用来读取图片、视频等二进制文件。注意,它在读写的时候是以bytes类型读写的,因此获得的是一个bytes对象而不是字符串。在这个读写过程中,需要自己指定编码格式。在使用带b的模式时一定要注意传入的数据类型,确保为bytes类型。

    • +模式:

      对于w+模式,在读写之前都会清空文件的内容。

      对于a+模式,永远只能在文件的末尾写入。

      对于r+模式,也就是读写模式。

    • 对于w+模式,在读写之前都会清空文件的内容。
      对于a+模式,永远只能在文件的末尾写入。
      对于r+模式,也就是读写模式。
      fp = open('hello.txt', 'w+')
      text = fp.write('hello my python!')  # 写如之前会清空文件的内容
      print(text)  # 返回的是写入的字符个数
      fp.close()
      
      fp = open('hello.txt', 'r+')
      text = fp.read(6)  # 读写模式
      print(text)  # 返回的是读取的内容
      fp.close()
      
      fp = open('hello.txt', 'r+')
      text = fp.write('my python!')  # 覆盖之前文件的内容
      print(text)  # 返回的是写入的字符个数
      fp.close()
      
      
      fp = open('hello.txt', 'a+')
      fp.write('\n这句话会添加在之前写入的内容之后')
      fp.seek(0)  # 通过seek方法可以将光标调整到0,括号内的数字表示从第几个字符后读取。
      text = fp.read()  # 如果是读取模式,需要结合调整光标位置来实现。
      # fp.seek(0)  # 通过seek方法可以将光标调整到0
      print(fp.tell())  # 通过tell方法可以查到当前的光标所在位置,返回的数字代表光标后有几个字符
      print(text)  # 返回的是写入的字符个数
      
      fp.close()
    • 编码问题

      • 要读取非UTF-8编码的文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件

      • 遇到有些编码不规范的文件,可能会抛出UnicodeDecodeError异常,这表示在文件中可能夹杂了一些非法编码的字符。遇到这种情况,可以提供errors=’ignore‘参数,表示如果遇到编码错误后如何处理。

    • 文件对象操作

    • 每当我们用open方法打开一个文件时,将返回一个文件对象。这个对象内置了很多操作方法。

    • f.read(size) #size读取数据的个数

      • 读取一定大小的数据, 然后作为字符串或字节对象返回。size是一个可选的数字类型的参数,用于指定读取的数据量。当size被忽略了或者为负值,那么该文件的所有内容都将被读取并且返回。

      • 注意:

        • 如果文件体积较大,请不要使用read()方法一次性读入内存,而是read(512)这种一点一点的读。

    • f.readline()

      • 从文件中读取一行n内容。换行符为'\n'。如果返回一个空字符串,说明已经已经读取到最后一行。这种方法,通常是读一行,处理一行,并且不能回头,只能前进,读过的行不能再读了。

    • f.readlines()

      • 将文件中所有的行,一行一行全部读入一个列表内,按顺序一个一个作为列表的元素,并返回这个列表。readlines方法会一次性将文件全部读入内存,所以也存在一定的风险。但是它有个好处,每行都保存在列表里,可以随意存取。

    • #需求:读取文件中的数据
      fp = open('./test.txt','r')
      text = fp.read(10) #读取指定字节的数据
      text_line = fp.readline() #一次读取一行数据
      text_lines = fp.readlines() #读取多行数据,返回一个列表
      print(text_lines)
      fp.close()

    • 总结:

      • 几种不同的读取和遍历文件的方法比较:如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。普通情况,使用for循环更好,速度更快。

    • f.write()

      • 将字符串或bytes类型的数据写入文件内。write()动作可以多次重复进行,其实都是在内存中的操作,并不会立刻写回硬盘,直到执行close()方法后,才会将所有的写入操作反映到硬盘上。在这过程中,如果想将内存中的修改,立刻保存到硬盘上,可以使用f.flush()方法。

        fp = open('./test123.txt','w')
        fp.write('hello Tom ')
        fp.close() #将文件内容清空,再写入新数据
        fp = open('./test123.txt','a')
        fp.write('hello Tom ')
        fp.close() #在文件数据末尾追加数据
    • f.close()

      • 关闭文件对象。当处理完一个文件后,调用f.close()来关闭文件并释放系统的资源。文件关闭后,如果尝试再次调用该文件对象,则会抛出异常。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了,或者更糟糕的结果。也就是说大象塞进冰箱后,一定不要忘记关上冰箱的门。

  • with关键字

    with关键字用于Python的上下文管理器机制。为了防止诸如open这一类文件打开方法在操作过程出现异常或错误,或者最后忘了执行close方法,文件非正常关闭等可能导致文件泄露、破坏的问题。Python提供了with这个上下文管理器机制,保证文件会被正常关闭。在它的管理下,不需要再写close语句。注意缩进。

    with open('./test123.txt','r') as fp: #fp = open()
        text = fp.read(5)
    print(text)
    
    #上下两组代码功效一样
    fp = open('./test123.txt','r')
    text = fp.read(5)
    print(text)
    fp.close()

    对图片,音频,视频,压缩包等二进制的数据进行文件读写操作

  • 实现一个图片文件的拷贝

    • 1.打开一个图片文件,读取其二进制的数据

    • 2.将读取到的数据写入到另一个路径下

过程:1.打开图片;2.读取图片二进制的数据;3.将读取到的图片数据写入到另一个文件中;4.关闭文件

fp = open('feilong.png', 'rb')  # r是读取文本数据,rb是读取二进制数据
img_data = fp.read()  # 读取到了图片的二进制数据

# 将图片的二进制数据写到另一个路径下
fp1 = open('./imgs/fei.jpg', 'wb')  # ./imgs/fei.jpg是相对路径
fp1.write(img_data)

fp.close()
fp1.close()
fp = open('D:/feilong.png', 'rb') # r是读取文本数据,rb是读取二进制数据。D:/feilong.png是绝对路径
img_data = fp.read() # 读取到了图片的二进制数据。
# 将图片的二进制数据写到另一个路径下
fp1 = open('D:/study/fei.jpg', 'wb') # D:/study/fei.jpg是绝对路径
fp1.write(img_data)

fp.close()
fp1.close()

将上面的代码封装成函数

def imgCopy(img, copyImg):  # img是原始图片地址的形参,copyImg是新图片地址的形参
      # 1.打开原始图片img
      fp = open('D:/feilong.png', 'rb')  # r是读取文本数据,rb是读取二进制数据
      # 2.读取原始图片的二进制数据
      img_data = fp.read()  # 读取到了图片的二进制数据.D:/feilong.png是绝对路径
      # 3.将读取到的图片数据写入到另一个新的图片文件中
      # 将图片的二进制数据写到另一个路径下
      fp1 = open('D:/study/fei.jpg', 'wb')  # D:/study/fei.jpg是绝对路径
      fp1.write(img_data)
      # 4.关闭文件
      fp.close()
      fp1.close()
  
  
imgCopy('D:/feilong.png', 'D:/study/fei.jpg')  # 调用函数imgCopy并进行传参
# 实现一个图片复制功能(图片数据就是二进制类型的数据)
# 过程:1.打开图片 2.读取图片二进制的数据 3.将读取到的图片数据写入到另一个文件中 4.关闭文件
def imgCopy(img,copyImg): #img是原始图片路径  copyImg是复制的图片路径
    # 1.打开原始图片img
    fp_1 = open(img,'rb')
    # 2.读取原始图片的二进制数据
    img_data = fp_1.read()
    # 3.将读取到的图片数据写入到另一个新的图片文件中
    fp_2 = open(copyImg,'wb')
    fp_2.write(img_data)
    # 4.关闭文件
    fp_1.close()
    fp_2.close()

imgCopy('pandas.jpg','./imgs/new_pandas.jpg')

练习:登录注册

'''
需求:注册功能
    1.让用户录入用户名,密码,重复密码,手机号基本信息
    2.检测两次输入的密码是否一致,一致则注册成功,否则注册失败
    3.注册成功后需要将用户信息存储到文件中进行保存
'''

def regist():
    #让用户录入用户名,密码,重复密码,手机号基本信息
    print('------欢迎来到注册页面--------')
    username = input('输入注册的账号:')
    password = input('输入注册的密码:')
    repeatpwd = input('重复密码:')
    phonenum = input('手机号:')
    #检测两次输入的密码是否一致,一致则注册成功,否则注册失败
    if password == repeatpwd:#==可以判断两个字符串是否一样:
        #两次密码一致:注册成功,将用户信息写入到文件保存
        with open('userData.txt','a+') as fp:
            #\n表示回车换行的意思
            fp.write(username+'-'+password+'-'+phonenum+'\n')
            print('恭喜您注册成功,账号为:',username)


    else:#两次密码不一致,注册失败
        print('两次密码不一致,注册失败,请重新注册!')


'''
登录功能:
    1.让用户录入用户名,密码
    2.验证登录状态
'''

def login():
    #1.让用户录入用户名,密码
    print('------欢迎来到登录页面------')
    username = input('请输入登录的账号:')
    password = input('请输入登录的密码:')

    #2,验证登录状态
    #读取文件中的用户信息的数据
    with open('userData.txt','r') as fp:
        #[Tom -123-222, jay-456-666]
        user_data_list = fp.readlines() #读取每一行数据,返回的是一个列表
        for data in user_data_list:
            data = data.strip()#取出字符串中的回车
            #切分字符串,取出用户名和密码即可
            #s_data = [Tom ,123,222]
            s_data = data.split('-')
            #从文件中获取的用户名和密码
            f_username = s_data[0]
            f_password = s_data[1]
            #判断登录状态
            flat = 0 #如果flat=0表示登录失败,为1表示登录成功
            if username == f_username and password == f_password:
                flat = 1 #表示登录成功
                break
        if flat == 1:
            print('登录成功')
        else:
            print('登录失败')



login()
# regist()#调用该函数完成注册功能

C++编程练习与文件操作详解 本文涵盖多个C++编程实践问题,包括计算平均值与方差、有序列表的插入与删除、文件读写操作、标准模板库(STL)的使用等内容。详细展示了函数编写、数据处理、文件操作及常用算法实现,适合C++初学者和进阶者参考学习。 阅读详情

相关推荐

C++文件操作与异常处理编程练习

本文包含多个C++编程练习,涵盖文件操作、输入输出流、字符串处理、异常检测及函数编写等内容。具体包括文件的打开与关闭、ifstream与ofstream的使用、二进制与文本模式操作、标准流输出验证、异常处理机制、字符串处理函数编写以及数据校验逻辑实现。

w3x4y的博客 939

python 文件操作练习题

import os while True: mulu = input('请输入目录:') if os.path.exists(mulu): # 判断是否存在此目录 os.chdir(mulu) # 留在此目录 ret = os.listdir(os.getcwd()) # 打印出此目录的所有文件 print(ret) ...

有点坏。的博客 2461

65、C编程练习与文件操作知识

本博客深入介绍了C#编程中的多个重要主题,包括多种类型的编程练习、文件操作知识、数据组织与流的概念、顺序访问文本文件的读写和搜索操作,以及对象的序列化与反序列化。通过详细的代码示例和项目实践,帮助开发者提升C#编程技能,并掌握数据持久化存储和传输的方法。内容还涵盖了调试常见错误及对远程编程工作的思考,适合希望全面掌握C#应用开发的读者。

4k5l6j7h8的博客 63

pycharm文件操作的练习

weixin_47793088的博客 327

06-文件操作-练习

🎉 欢迎回来!今天我们探索了Python的文件操作魔法,这些技能可以帮助我们将魔法咒语和知识永久保存下来。现在让我们通过一些有趣的练习来巩固这些知识吧!

86

Java编程练习:文件操作与Web应用开发

本文通过分析一系列Java编程练习,探讨了文件处理、字符串操作、异常处理等编程技巧,并介绍了如何使用JSP技术开发简单的Web应用程序。通过具体的代码示例,文章展示了如何对文本文件进行排序、移除注释、统计单词出现次数,以及如何创建Web表单和计算平均分。

weixin_42433737的博客 434

Linux文件操作命令的练习

⦁ 在/目录下新建目录s1/s2/s3,在s2中新建t2.txt,输入”Hello”,在s3目录下新建t3.txt,输入“world!⦁ 新建2个文件d1.txt d2.txt ,使用vim打开d1.txt 输入“Hello World”字符串,将d1.txt 硬链接到d2.txt ,查看2个文件的硬连接数。⦁ 使用head命令访问网卡配置文件中的前4行并存储到/root/NICETC.txt中,且显示内容。⦁ 在/etc/passwd中搜索sshd 所在行的上下各3行信息。

nihuhui666的博客 315

C语言指针与文件操作进阶练习解析

本文深入探讨了C语言中的指针概念和文件操作技巧。通过解析书籍章节中的代码示例和习题解答,详细解释了指针算术、字符串处理函数的实现,以及如何统计文件中字母出现次数、复制文件只包含字母字符、计算单词数量等实际应用场景。文章不仅提供了理论知识,还给出了实际编码的解决方案。

weixin_29363791的博客 348

Python第七章05:文件操作综合练习题

B站黑马程序员,自学笔记分享

Seeding_Python的博客 920

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929

Android系统编译之Communication error with Jack server (35), try ‘jack-diagnose‘ or see Jack server log

jack server failed场景个人分析网上分析分析1分析2原因1:权限问题原因2:端口占用原因3:删除 TLSv1, TLSv1.1测试结论解决方案说明相关链接 场景 在进行Android系统开发时,在liunx编译时发生问题,描述如下: ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper

weixin_43194854的博客 2401

python小练习--文件操作

练习1:文件操作的初体验与编码问题 write(a):把字符串 a 写入到文件中 writelines(b):把字符串列表写入文件中,不添加换行符 f = open(r"a.txt","w",encoding="utf-8") #指定utf-8编码 f.write("今天是2020-11-16") f.close() 编码与解码相匹配,可以正常的查看信息 f = open(r"Blank.txt","a",encoding="utf-8") s = ["Clichong\n","Lawrence\n"

Clichong 1145

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 334

[Python学习日记-27] 文件操作练习题解析

Python 文件操作的练习

JovaZou的成长之路 827

CentOS7 安装天气分型软件cost733过程详解

cost733是一款天气分型软件,其内置的一些算法可以帮助气象工作者进行天气类型划分等(我也是初学者,仅仅知道一些皮毛),但是网上找到的安装办法比较少,并且总会出现一些报错,试了一晚上,终于将安装办法调通了,希望可以帮助到大家

weixin_62573024的博客 3562

玩转openclaw+企业微信

OpenClaw横空出世:AI从问答到执行的范式革命 OpenClaw作为2026年AI领域的重大突破,实现了从对话机器人到智能执行体的进化。其核心价值在于"自主执行"而非简单交互,通过六层解耦架构(表现层、网关层、运行时层、技能层、工具层、记忆层)构建完整执行闭环。关键技术包括Model Context Protocol实现多模型兼容,以及事件驱动架构确保实时响应。安装过程支持多平台,通过Node.js环境即可快速部署,并支持对接主流大模型。OpenClaw标志着AI开始真正&quot

西木风落 1591

2019/05/23:目录文件操作练习

#encoding=utf-8 """ 1. 查找某个目录下是否存在某个文件名 """ #先到指路径下,把里面所有的文件打印出来,再判断要找的文件是不是在目录下 import os def fileIsExcist(path,file): os.chdir(path)#到目标目录下 dirsAndFiles=os.listdir(path) if file in dirs...

sinat_18722099的博客 222

redhawk如何看高toggle rate instance

1.图形界面View-Power Map - Toggle Map of Instances。redhawk通过报告和图形界面两种方式查看高toggle rate的instance。2.看warning log,在adsRpt/Warn里,搜toggle rate。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 616

Python篇:文件操作练习

题目1.批量修改文件名2.读取一个文件,显示除了以井号(#)开头的行以外的所有行。3.制作一个"密码薄",其可以存储一个网址(例如 www.youkuaiyun.com),和一个密码(例如 123456),请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能4.无重复字符的最长子串5.矩阵置零 1.批量修改文件名 import os folderName = os.path.realpath('...

Dreaming5498的博客 3141

【微服务】Spring AI Alibaba Jmus 从部署到项目实战详解

Spring AI Alibaba Jmus 从部署到项目实战详解

congge 4186

CAMERALINK硬件封装说明

闲言少叙,直接上活,Cameralink硬件接口当前主要分为MDR26和SDR26两种,其中MDR对应封装较大价格比较便宜,SDR对应尺寸较小价格比较贵,这点我个人总是记错的图1 MDR26实物图图2 SDR26实物图。

6169

文件操作练习

针对文件操作的练习

2301_80243321的博客 344

IEM模型,地表粗糙度模拟

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

python文件操作基本练习

python文件操作基本练习 1、批量修改文件名 import os import sys path = "E:\作业\python\homework" pre = 0 s3 = ".txt" for i in range(1, 5): pre = pre + 1 oldname = str(pre) + s3 print("name = " + str(pre) + ...

离人散 926

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文件操作&C语言项目练习

文件操作函数&学生信息管理练习

Charary的博客 1544

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python文件操作图形化——python实战项目:单词练习系统

作为Python特定的GUI界面,它是一个图像的窗口,并且tkinter是Python自带的模块,可以编辑GUI界面,并且可以用GUI实现很多直观的功能,例如开发一个计算器或者开发一个有交互功能的小系统。练习方式有英译中、中译英、拼写填空,对于回答正确的问题会给出提示,并增加积分,错误的问题只有ᨀ示,不增加积分。需要说明的是,虽然tkinter很好用,但是如果要开发一些大型的应用,tkinterᨀ供的功能还是太少了,需要使用wxPython、PyQt这些第三方库。tkinter的组件。

coising的博客 1380

Python练习8-文件操作

Python文件操作

qq_69866029的博客 766
上一篇: 函数及其参数
下一篇: 包和常见模块
天*天
博客等级 码龄3年 27粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值