zoukankan      html  css  js  c++  java
  • python之文件操作

    python之文件操作

    ⼀. ⽂件操作的作⽤

    ⽂件操作包含什么?
    答:打开、关闭、读、写、复制....
    ⽂件操作的的作⽤是什么?
    答:读取内容、写⼊内容、备份内容......

    ⼆. ⽂件的基本操作

    ⽂件操作步骤

    1. 打开⽂件
    2. 读写等操作
    3. 关闭⽂件
    注意:可以只打开和关闭⽂件,不进⾏任何读写操作。

    1.1 打开

    在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下:
    open(name, mode)
    name:是要打开的⽬标⽂件名的字符串(可以包含⽂件所在的具体路径)。
    mode:设置打开⽂件的模式(访问模式):只读、写⼊、追加等。
    1.1.1 打开⽂件模式
    1.1.2 快速体验
    f = open('test.txt', 'w')
    注意:此时的 f 是 open 函数的⽂件对象。

    1.2 ⽂件对象⽅法

    1.2.1 写
    • 语法
    对象对象.write('内容')
    •  体验
    # 1. 打开⽂件
    f = open('test.txt', 'w')
    # 2.⽂件写⼊
    f.write('hello world')
    # 3. 关闭⽂件
    f.close()
    • 注意:
    1. w 和 a 模式:如果⽂件不存在则创建该⽂件;如果⽂件存在, w 模式先清空再写⼊, a 模式直接末尾追加。
    2. r 模式:如果⽂件不存在则报错。
    1.2.2 读
    • read()
    ⽂件对象.read(num)
    num表示要从⽂件中读取的数据的⻓度(单位是字节),如果没有传⼊num,那么就表示读取⽂件中所有的数据。
    • readlines()
    readlines可以按照⾏的⽅式把整个⽂件中的内容进⾏⼀次性读取,并且返回的是⼀个列表,其中每⼀⾏的数据为⼀个元素。
    f = open('test.txt')
    content = f.readlines()
    # ['hello world
    ', 'abcdefg
    ', 'aaa
    ', 'bbb
    ', 'ccc']
    print(content)
    # 关闭⽂件
    f.close()
     
    • readline()
    readline()⼀次读取⼀⾏内容。
    f = open('test.txt')
    content = f.readline()
    print(f'第⼀⾏:{content}')
    content = f.readline()
    print(f'第⼆⾏:{content}')
    # 关闭⽂件
    f.close()

    1.3 关闭

    ⽂件对象.close()

    三. ⽂件备份

    需求:⽤户输⼊当前⽬录下任意⽂件名,程序完成对该⽂件的备份功能(备份⽂件名为xx[备份]后缀,例如:test[备份].txt)。

    3.1 步骤

    1. 接收⽤户输⼊的⽂件名
    2. 规划备份⽂件名
    3. 备份⽂件写⼊数据

    3.2 代码实现

    1. 接收⽤户输⼊⽬标⽂件名
    old_name = input('请输⼊您要备份的⽂件名:')

    2. 规划备份⽂件名
      2.1 提取⽬标⽂件后缀
      2.2 组织备份的⽂件名,xx[备份]后缀
    # 2.1 提取⽂件后缀点的下标
    index = old_name.rfind('.')
    # print(index) # 后缀中.的下标
    # print(old_name[:index]) # 源⽂件名(⽆后缀)
    # 2.2 组织新⽂件名 旧⽂件名 + [备份] + 后缀
    new_name = old_name[:index] + '[备份]' + old_name[index:]
    # 打印新⽂件名(带后缀)
    # print(new_name)
    3. 备份⽂件写⼊数据
      3.1 打开源⽂件 和 备份⽂件
      3.2 将源⽂件数据写⼊备份⽂件
      3.3 关闭⽂件
    # 3.1 打开⽂件
    old_f = open(old_name, 'rb')
    new_f = open(new_name, 'wb')
    # 3.2 将源⽂件数据写⼊备份⽂件
    while True:
     con = old_f.read(1024)
     if len(con) == 0:
         break
     new_f.write(con)
    # 3.3 关闭⽂件
    old_f.close()
    new_f.close()

     3.3 思考

    如果⽤户输⼊ .txt ,这是⼀个⽆效⽂件,程序如何更改才能限制只有有效的⽂件名才能备份?
    答:添加条件判断即可。
    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()

    四. ⽂件和⽂件夹的操作

    在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,具体步骤如下:

    1. 导⼊os模块

    import os

    2. 使⽤ os 模块相关功能

    os.函数名()

    4.1 ⽂件重命名

    os.rename(⽬标⽂件名, 新⽂件名)
    import os 
    os.rename("test.txt","text001.txt")

    4.2 删除⽂件

    os.remove(⽬标⽂件名)

    4.3 创建⽂件夹

    os.mkdir(⽂件夹名字)

    4.4 删除⽂件夹

    os.rmdir(⽂件夹名字)

    4.5 获取当前⽬录

    os.getcwd()
    import os 
    f=os.getcwd()
    print(f)

    4.6获取⽬录列表

    os.listdir(⽬录)
    import os 
    path = "./"
    file=os.listdir(path)
    print(file)

    4.7将目录写入文件

    # 创建文件,将D:下的目录写入文件abc.txt
    import os
    path = "D:/"
    file = os.listdir(path)
    print(file)
    f=open("abc.txt","w")
    f.write("写入文件目录")
    f2 = str(file)#将file改为字符串类型
    f.write(f2)

    4.8获取自增目录

    #创建10-20文件夹
    import os
    i = 1
    ab = "10" #字符串类型
    while i <=10:
        abc = int(ab)#把字符串类型改为整数类型
        abc += i#每循环一次abc+1
        abcde = str(abc)#abc转换为字符串类型
        os.mkdir(abcde)#新建文件夹
        print(abc)#测试自增
        i += 1
    print(abc)#输出11—20

    五.应⽤案例

    需求:批量修改⽂件名,既可添加指定字符串,⼜能删除指定字符串。
    • 步骤
    1. 设置添加删除字符串的的标识
    2. 获取指定⽬录的所有⽂件
    3. 将原有⽂件名添加/删除指定字符串,构造新名字
    4. os.rename()重命名
    • 代码
    import os
    # 设置重命名标识:如果为1则添加指定字符,flag取值为2则删除指定字符
    flag = 1
    # 获取指定⽬录
    dir_name = './'
    # 获取指定⽬录的⽂件列表
    file_list = os.listdir(dir_name)
    # print(file_list)
    # 遍历⽂件列表内的⽂件
    for name in file_list:
     # 添加指定字符
     if flag == 1:
         new_name = 'Python-' + name
     # 删除指定字符
     elif flag == 2:
         num = len('Python-')
         new_name = name[num:]
     # 打印新⽂件名,测试程序正确性
     print(new_name)
     
     # 重命名
     os.rename(dir_name+name, dir_name+new_name)

    六. 总结

    • ⽂件操作步骤
    打开
    ⽂件对象 = open(⽬标⽂件, 访问模式)
    操作
    ⽂件对象.read()
    ⽂件对象.readlines()
    ⽂件对象.readline()
    ⽂件对象.write()
    • seek()
    关闭
    ⽂件对象.close()
    主访问模式
    • w:写,⽂件不存在则新建该⽂件
    • r:读,⽂件不存在则报错
    • a:追加
    ⽂件和⽂件夹操作
    • 重命名:os.rename()
    • 获取当前⽬录:os.getcwd()
    • 获取⽬录列表:os.listdir()
    小丑竟是我自己
  • 相关阅读:
    dp有哪些种类
    hibernate 双向n-n
    TextView——setCompoundDrawables说明
    Codeforces Round #FF (Div. 2)
    波折yosemite下载过程
    谁,例如下列方法区的指导下
    [LeetCode] 032. Longest Valid Parentheses (Hard) (C++)
    TCP/IP的经典网络编程
    NYOJ353 3D dungeon 【BFS】
    Ubuntu 14.04 grub2 温馨提示
  • 原文地址:https://www.cnblogs.com/lspbk/p/14340885.html
Copyright © 2011-2022 走看看