• Python基础 6 .文件操作


    6.1 文件

    6.1.1.打开文件: f = open(r'file_path', mode='r')

         不指定路径就是当前文件夹下

        传入表示文件路径的字符串,会返回一个文件对象。

    6.1.2.关闭文件: f.close()

        打开一个文件  最后一定要关闭

          路径可以用相对路径 也可以用绝对路径

    6.1.3.模式 描述

    • r:

      以只读方式打开文件,文件指针默认放在文件开头,文件不存在则报错

    • r+:

      打开一个文件用于读写, 文件指t默认放在文件开头,文件不存在则报错

    • w:

      打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果不存在,创建新文件

    • W+

      打开一个文件用于读写,如果该文件已存在则将其覆盖,如果不存在,创建新文件

    • a:

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

    • a+:

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

    • 其他模式:rb rb+ wb wb+ ab ab+

      加个b的作用:以二进制的格式打开文件,进行上述操作 。

    • 文本模式

      以str字符串形式写入 读取出来的也是str字符串

    • 二进制模式

      以bytes字符串形式写入 读取出来的也是bytes字符串

     

     

    6.1.4.常用操作方法

     1  操作                   方法
     2  读取指定大小的内容      f.read()
     3  读取一行的内容          f.readline()
     4  读取多行内容         f.readlines()
     5  写入内容            f.write(data)
     6  写入多行(需要自己加换行符)  f.writelines(lines)
     7  立即刷新缓冲        f.flush()
     8  获得游标位置        f.tell()
     9  调整游标位置        f.seek(position)

    10 f = open("1.txt","r+",encoding="utf-8") 11 f.read() # 12 f.write(data) # 13 f.tell() #文件光标位置 14 f.seek(10) #控制光标移动 15 f.seek(-10,2) #2为倒着读10个字符 16 f.flush() #刷新 17 f.truncate(10) #截取0-10位置 写操作 18 f.readline() #读出一行 19 f.readlines() #按行全部读出 20 f.close() #关闭文件
     
     

    6.2 内存假文件StringIO BytesIO

    1.:如何在内存中模拟一个文件 ?

    文本模式: f = io.StringIO()
    二进制模式: f = io.BytesIO()

    2.读取文件:

    f.getvalue()    获取整个io流的文件(光标移到最前面)
    注意! 内存假文件一旦关闭,数据消失

    6.3 with … as … 上下文管理

    with open(file_path, mode='r') as f:

        对f进行一系列操作
        也可以执行别的操作

        跳出with语句快的时候自动执行f.close()

     

    with open(file_path, mode='r') as f1,open(file_path, mode='r') as f2....  :

        对f1 f2进行一系列操作
        也可以执行别的操作

        跳出with语句块的时候自动执行f.close()

     

    6.4 os path(路径)

    open(file_path, mode='r', encoding='utf-8')

    open(file_path, mode='r', encoding=None, errors='ignore') 忽视问题

     

    1.os模块 的目录及文件操作:

    显示当前路径: os.getcwd()
    展示当前目录内容: os.listdir(path)
    改变当前路径: os.chdir(path)
    创建目录: os.mkdir(文件名)
    删除目录:”os.rmdir(文件名)

    使用Linux命令: os.system()
    删除文件: os.remove(文件名)
    重命名: os.rename

    2.os.path模块的路径操作:

    路径拼接: os.path.join(path1,path....)
    所在目录/父级目录: os.path.dirname
    基本短路径: os.path.basename
    绝对路径: os.path.abspath
    相对路径: os.path.relpath
    
    资源大小: os.path.getsize
    资源时间: os.path.getctime /创建
             getatime /访问   
             getmtime  修改
    路径是否存在: os.path.exists
    是否是目录: os.path.isdir
    是否是文件: os.path.isfile
    是否是绝对路径: os.path.isabs
    
    print(os.path.abspath('path'))

    import os

    def copy_file(old_path,new_path):
       with open(old_path,'r')as f,open(new_path,'w')as e:
           e.write(f.read())

    copy_file('test.py','/home/pyvip/test2.py')


    def traversal_dir(path):
       path_list = os.listdir(path)

       print(path_list)

    traversal_dir('homepyvippython 34jichu')


    #####################################


    def traversal dir(dir_ path):
         path_ list = os.listdir(dir_ path)
         print(' 目录|{}|中的内容为:{}。'.format(dir_ path,path. list))
     for path in path_ list:
             abs_ path = os .path. join(dir_ path, path)
     if os.path. isdir(abs_ path):
             traversal_ dir(abs_ path)

    traversal_ dir( ' /home/pyvip' ) .




     

  • 相关阅读:
    并发编程(IO多路复用)
    411. 格雷编码
    120. 单词接龙 (BFS)
    1244. Minimum Genetic Mutation
    47.Majority Element I & II
    86. 二叉查找树迭代器
    1183. 排序数组中的单个元素
    163. 不同的二叉查找树
    428.x的n次幂
    156. 合并区间
  • 原文地址:https://www.cnblogs.com/dyf25288-/p/11675102.html
Copyright © 2020-2023  润新知