【Python】文件操作(单文件操作)

简介: 【1月更文挑战第26天】【Python】文件操作(单文件操作)

 image.gif编辑

目录

一、文件操作概述:

二、文件基本操作:

文件操作步骤:

1.打开文件:

2.对文件进行读写操作:

3.关闭文件的输入输出流:

demo:

文件访问模式:

基础访问模式特点:

读取操作:

1.read()

2.readline()

3.readlines()

文件对象方法:

seek()

三、文件备份:

实现步骤:

代码实现:

1.接收用户输入的目标文件名:

2.规划备份文件名:

3.备份文件写入数据:

4.代码优化:


一、文件操作概述:

       文件操作:就是将数据从内存中进行持久化,读取本地磁盘或者远程服务器数据加载到内存中,可以使得程序在下一次执行时,可以直接使用上一次执行结束时的数据,而不必重新获取数据!


二、文件基本操作:

文件操作步骤:

1.打开文件:

使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:

open(name,mode)

image.gif

    • name:指定打开的目标文件名称的字符串(可以包含文件所在的具体路径)
    • mode:设置打开文件的模式(只读,写入,追加等)

    2.对文件进行读写操作:

    # 指定文件对象,通过文件对象,对文件进行读写操作
    f.write("hello krian !")

    image.gif

    3.关闭文件的输入输出流:

    # 关闭文件流
    f.close()

    image.gif

    demo:

    f = open('test.text','w')
    #--------------------------------------------------
    # 1.打开一个文件(新创建一个文件) open()
    f = open('test.text', 'w') # f:作为open函数的文件对象
    # 2.指定文件对象,对文件进行读写操作
    f.write("hello krian !")
    # 3.关闭文件流
    f.close()

    image.gif

    注意:此时fopen函数的文件对象!

    文件访问模式:

    模式

    描述

    r

    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

    rb

    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

    r+

    打开一个文件用于读写。文件指针将会放在文件的开头。

    rb+

    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

    w

    打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    wb

    以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    w+

    打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    wb+

    以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

    a

    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    ab

    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

    a+

    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    ab+

    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    基础访问模式特点:

      • 访问模式对文件的影响
      • 访问模式对write()的影响
        • 访问模式是否省略

        r访问模式:

          • 如果文件对象不存在,则会报错
          • 不支持写入操作,表示只读

          w访问模式:

            • 如果文件对象不存在,不会报错,程序自动创建对应的文件对象
            • 执行写入操作,如果文件对象已经存在,默认覆盖该文件对象

            a访问模式:

              • 如果文件对象不存在,不会报错,程序自动创建对应的文件对象
              • 执行追加操作,如果文件对象已经存在,默认在文件末尾追加写入的内容

              访问模式的参数是否可以省略:

                • 针对已经存在的文件对象进行操作时,访问模式可以省略,默认时r访问模式
                • 针对不存在的文件对象进行操作时,访问模式不可省略

                读取操作:

                1.read()

                文件对象.read(num)

                image.gif

                       num:表示要从文件中读取的数据长度(单位字节),如果没有传入num那么就表示读取文件中所有的数据。

                注意:每一行结尾处的"\n"的换行符对字节数的占用!!!

                2.readline()

                readline()一次性读取一行内容:

                f = open('test.txt')
                content = f.readline()
                print(f'第一行:{content}')
                content = f.readline()
                print(f'第二行:{content}')
                # 关闭文件
                f.close()

                image.gif

                3.readlines()

                       readlines()函数可以按照行的方式把整个文件中内容进行一次性读取,并返回的是一个列表,其中每一行的数据作为一个元素。

                test.text文件内容:

                hello krian !
                hello world !
                hello lunaticer!
                hello 明天!

                image.gif

                # 1.打开一个文件(新创建一个文件) open()
                f = open('test.text', 'r')  # f:作为open函数的文件对象
                # 2.指定文件对象,对文件进行读取操作
                test_text = f.readlines()
                print(test_text)  # ['hello krian !\n', 'hello world !\n', 'hello lunaticer!\n', 'hello 明天!']
                # 3.关闭文件流
                f.close()

                image.gif

                文件对象方法:

                seek()

                作用:用来移动文件指针。

                文件对象.seek(偏移量,起始位置)

                image.gif

                  • 0:文件开头
                  • 1:当前位置
                    • 2:文件结尾

                    三、文件备份:

                      1. 需求分析
                      2. 根据需求分析步骤
                        1. 根据实际场景体调优

                        实现步骤:

                          1. 接收用户输入的文件名
                          2. 规划备份文件名
                            1. 备份文件写入数据(数据与原文件一致)

                            代码实现:

                            1.接收用户输入的目标文件名:

                            old_name = input('请输入您要备份的文件名:')

                            image.gif

                            2.规划备份文件名:

                              • rfind()函数:从字符串右侧开始查找,返回下标索引值
                              • lfind()函数:从字符串左侧开始查找,返回下标索引值

                              # 提取文件后缀点的下标


                              index = old_name.rfind('.')

                              image.gif

                                • 字符串变量名[起始索引:终止索引]:字符串切片,返回子串
                                old_name[:index]

                                image.gif

                                # 组织新文件名 旧文件名 + [备份] + 后缀
                                new_name = old_name[:index] + '[备份]' + old_name[index:]
                                # 打印新文件名(带后缀)
                                # print(new_name)

                                image.gif

                                3.备份文件写入数据:

                                # 打开文件
                                old_f = open(old_name, 'rb')
                                new_f = open(new_name, 'wb')
                                # 将源文件数据写入备份文件
                                while True:
                                    con = old_f.read(1024)
                                    if len(con) == 0:
                                        break
                                    new_f.write(con)
                                # 关闭文件
                                old_f.close()
                                new_f.close()

                                image.gif

                                4.代码优化:

                                添加判断条件,限制后缀:

                                old_name = input('请输入您要备份的文件名:')
                                index = old_name.rfind('.')
                                if index > 0:
                                    postfix = old_name[index:]
                                new_name = old_name[:index] + '[备份]' + postfix
                                old_f = open(old_name, 'rb')
                                new_f = open(new_name, 'wb')
                                while True:
                                    con = old_f.read(1024)
                                    if len(con) == 0:
                                        break
                                    new_f.write(con)
                                old_f.close()
                                new_f.close()

                                image.gif



                                相关文章
                                |
                                21天前
                                |
                                存储 Python
                                Python文件操作(1)
                                【10月更文挑战第17天】
                                Python文件操作(1)
                                |
                                4月前
                                |
                                监控 Java 数据处理
                                文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
                                【7月更文挑战第31天】在 Python 系统编程中, 文件操作与 I/O 管理至关重要。
                                56 2
                                |
                                20天前
                                |
                                数据采集 存储 Python
                                Python文件操作2
                                【10月更文挑战第18天】
                                Python文件操作2
                                |
                                5月前
                                |
                                开发者 Python
                                Python基础第七篇(Python的文件操作)
                                Python基础第七篇(Python的文件操作)
                                |
                                2月前
                                |
                                存储 Python
                                Python文件操作
                                Python文件操作
                                |
                                5月前
                                |
                                存储 安全 开发者
                                文件操作?Python让你轻松搞定!
                                【6月更文挑战第12天】Python编程中的文件操作至关重要,涉及数据存储和系统交互。通过内置的`open()`函数,开发者可轻松处理文件。以只读模式`'r'`为例,使用`with`语句打开并读取文件内容;写入文件则用`'w'`或`'a'`模式。文件对象还支持高级功能,如文件指针移动,允许随机访问。掌握这些技能能提升开发效率。
                                33 0
                                |
                                2月前
                                |
                                存储 安全 Python
                                30天拿下Python之文件操作
                                30天拿下Python之文件操作
                                33 1
                                |
                                2月前
                                |
                                监控 安全 Java
                                文件操作不再难!Python系统编程实战,带你轻松驾驭文件系统与I/O
                                【9月更文挑战第13天】在Python系统编程中,文件操作与I/O管理至关重要。本文通过五个实战案例分享最佳实践:高效遍历文件系统、优雅处理文件读写、利用缓冲机制优化性能、并行处理文件加速任务以及异常处理确保程序稳健。使用pathlib、上下文管理器及concurrent.futures等工具,助你轻松掌握Python文件系统与I/O操作,提升编程效率和项目质量。 示例代码展示了如何使用pathlib遍历目录、with语句安全读写文件、控制缓冲区大小、并行处理多个文件以及捕获异常保证程序稳定运行。通过这些技巧,你将能够在实际项目中更加高效地管理和操作文件。
                                45 6
                                |
                                1月前
                                |
                                Java 程序员 Python
                                【Python】文件操作
                                【Python】文件操作
                                19 0
                                |
                                3月前
                                |
                                IDE 测试技术 开发工具
                                Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作
                                本文介绍了Python中的文件操作方法,包括使用open()打开文件、close()关闭文件、read()读取内容、readline()读取单行、readlines()读取多行、write()写入内容以及writelines()写入多行的方法。同时,探讨了文件操作模式和编码问题,并扩展了上下文管理器with...as的使用,以及对图片和音频文件操作的思考和练习。
                                30 1
                                Python接口自动化测试框架(基础篇)-- 不只是txt的文件操作