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

    python文件操作步骤

    #第一步:调用文件
    f=open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='gbk')
    #第二部:使用文件
    print(f.readlines())
    #第三部:关闭文件
    f.close()
    
    #python中内置函数with...as可以自动关闭文件:
    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='utf-8')as f:
        print(f.readlines())
    
    

    三种调用文件的路径的写法

    open(r'D:untitledvenvIncludelacklist.txt')  #r --read  只读,代表' '内的字符串没有其他含义不进行转义
    open('D:\untitled\venv\Include\blacklist.txt') # 或者可以使用 \ 来代替  
    open('D:/untitled/venv/Include/blacklist.txt') # 在windows系统使用路径时,可以使用/来代替 
    

    读(rt)

    # 读取模式
    # t 读取文本文件(默认值)
    # b 读取二进制文件
    

    read按字符/字节读取

    # f.read(int)可指定参数int,  ‘rt’ --->参数int代表读取int个字符   'rb'--->参数int代表读取int个字节
    
    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='gbk')as f:
        print(f.read())  
    ...运行结果
    
    艾妮
    你好
    hello
    world
    

    readline按行读取

    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='gbk')as f:
        print(f.readline(2))
    
    ...运行结果
    
    艾妮
    

    readlines把内容以列表形式展现

    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='gbk')as f:
        print(f.readlines())
    
    ...运行结果
    
    ['艾妮
    ', '你好
    ', 'hello
    ', 'world
    ']
    

    读取大文件

    # 读取大文件的方式
    file_name = 'demo.txt'
    
    try:
        with open(file_name,encoding='utf-8') as file_obj:
            # 定义一个变量,来保存文件的内容
            file_content = ''
            # 定义一个变量,来指定每次读取的大小
            chunk = 100
            # 创建一个循环来读取文件内容
            while True:
                # 读取chunk大小的内容
                content = file_obj.read(chunk)
    
                # 检查是否读取到了内容
                if not content:
                    # 内容读取完毕,退出循环
                    break
    
                # 输出内容
                # print(content,end='')
                file_content += content
    
    except FileNotFoundError :
        print(f'{file_name} 这个文件不存在!')
    
    
    print(file_content)
    

    覆盖写(wt)

    with open(r'D:untitledvenvIncludelacklist.txt', 'w', encoding='utf-8')as f:
        f.write('你好不好')
    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='utf-8')as f:
        print(f.readlines())
    
    ...运行结果
    
    ['你好不好']
    

    追加写appand(at)

    with open(r'D:untitledvenvIncludelacklist.txt', 'a', encoding='utf-8')as f:
        f.write('艾妮'+'
    ')
    with open(r'D:untitledvenvIncludelacklist.txt', 'r', encoding='utf-8')as f:
        print(f.read())
    
    ...运行结果
    
    你好不好
    艾妮
    艾妮
    艾妮
    

    (rb,wb,ab)二进制文件

    # 读取模式
    # t 读取文本文件(默认值)
    # b 读取二进制文件
    
    rb  :  read bytes 二进制字节方式读取 
    wb  :  write bytes  二进制字节方式覆盖写
    ab  :  appand bytes 二进制字节方式追加写
    

    示例:

    file_name = 'c:/Users/lilichao/Desktop/告白气球.flac'
    
    # 读取模式
    # t 读取文本文件(默认值)
    # b 读取二进制文件
    
    with open(file_name , 'rb') as file_obj:
        # 读取文本文件时,size是以字符为单位的
        # 读取二进制文件时,size是以字节为单位
        # print(file_obj.read(100))
    
        # 将读取到的内容写出来
        # 定义一个新的文件
        new_name = 'aa.flac'
    
        with open(new_name , 'wb') as new_obj:
    
            # 定义每次读取的大小
            chunk = 1024 * 100
    
            while True :
                # 从已有的对象中读取数据
                content = file_obj.read(chunk)
    
                # 内容读取完毕,终止循环
                if not content :
                    break
    
                # 将读取到的数据写入到新对象中
                new_obj.write(content)
    

    文件的光标移动

    # seek() 可以修改当前读取的位置(即移动光标)
    # seek()需要两个参数
    #     #   第一个 是要切换到的位置
    #     #   第二个 计算位置方式
    #     #       可选值:
    #     #           0 从头计算,默认值
    #     #           1 从当前位置计算
    #     #           2 从最后位置开始计算
    
    # tell() 方法用来查看当前读取的位置
    

    示例:# tail -f message | grep '404'

    import time
    with open(r'C:UsersAdministrator.USER-20190512NQDesktopa.txt', 'rb') as f:
        f.seek(0, 2)
        while True:
            data = f.read()
            if b'404' in data:
                print(data.decode('utf-8'))
            else:
                time.sleep(0.2)
    

    文件的其他操作--OS模块

    import os
    from pprint import pprint
    
    # os.listdir() 获取指定目录的目录结构
    # 需要一个路径作为参数,会获取到该路径下的目录结构,默认路径为 . 当前目录
    # 该方法会返回一个列表,目录中的每一个文件(夹)的名字都是列表中的一个元素
    r = os.listdir()
    
    # os.getcwd() 获取当前所在的目录
    r = os.getcwd()
    
    # os.chdir() 切换当前所在的目录 作用相当于 cd
    # os.chdir('c:/')
    
    # r = os.getcwd()
    
    # 创建目录
    # os.mkdir("aaa") # 在当前目录下创建一个名字为 aaa 的目录
    
    # 删除目录
    # os.rmdir('abc')
    
    # open('aa.txt','w')
    # 删除文件
    # os.remove('aa.txt')
    
    # os.rename('旧名字','新名字') 可以对一个文件进行重命名,也可以用来移动一个文件
    # os.rename('aa.txt','bb.txt')
    os.rename('bb.txt','c:/users/lilichao/desktop/bb.txt')
    
    pprint(r)
    

  • 相关阅读:
    目前最大的IPV6安全风险有哪些?
    PHP中exec、system等函数调用linux命令问题
    ubuntu下LAMP环境安装
    Ubuntu配置Apache虚拟主机
    XML和YAML的区别与使用方法
    使用CURL访问站点的时候出现403的解决办法
    IPv6安装及使用手册
    SuperSlide2.1-滚动
    HTML常用手册
    关于Ajax参数的思考
  • 原文地址:https://www.cnblogs.com/du-z/p/11027525.html
Copyright © 2011-2022 走看看