zoukankan      html  css  js  c++  java
  • 文件处理

    r+,w+,a+

    with open (r'D:python_workspaceday8文件处理	est.txt','r+',encoding = 'utf-8') as f:
        print(f.readable())  #判断可读 True
        print(f.writable())  # 判断可写 True
        print(f.readline())  # 读取第一行内容
        f.write('嘿嘿')  # 将字符串添加到文件中
    with open (r'D:python_workspaceday8文件处理	est.txt','w+',encoding = 'utf-8') as f: 
    print(f.readable()) #判断可读 True
    print(f.writable()) # 判断可写 True
    print(f.readline()) #读取内容为空
    f.write(
    '嘿嘿') # 将字符串添加到文件中
    with open(r'a',mode='r+b') as f:
        print(f.readable())  #判断可读 True
        print(f.writable())  # 判断可写 True
        res = f.read()  #返回的是二进制数
        print(res)  # b'xe5x98xbfxe5x98xbf
    xe5x93x88xe5x93x88
    xe5x93x88xe5x96xbd'
        print(res.decode('utf-8'))  # 返回的是文件内容
        res1 = str(res,encoding='utf-8')
        print(res1)  # 返回的是文件内容

    在rt模式下,read内的n表示的是字符个数

    其他情况下,n表示的是字节数

    with open(r'a','rb') as f:
        res = f.read(9)  # 读的是三个字节bytes
        print(res)  # 读取的是二进制数b'xe5x98xbfxe5x98xbfxe5xbex88'
        print(res.decode('utf-8'))  # 打印的是三个字符
    f.seek(offset,whence)
    offset:相对偏移量  光标移动的位数
    whence:
        0:参照文件的开头   t和b都可以使用
        1:参照光标所在的当前位置  只能在b模式下用
        2:参照文件的末尾  只能在b模式下使用
    with open(r'a','rt',encoding='utf-8') as f:
        print(f.read(1))  # 读取文件中的第一个字
        f.seek(6,0)  # 0是将光标放到文件的开头,6是将光标移动6个字节
        print(f.read(1))  # 读取一个字符
        f.seek(0,0)  # 将光标放到文件开头,不移动光标
        print(f.read())  # 将光标之后的字符都读取出来
    with open(r'a','rb') as f:
    print(f.read(6).decode('utf-8')) # 读取六个字节 f.seek(
    9,1) # 光标在当前读取的位置,然后移动9个字符 print(f.read(1).decode('utf-8')) # 读取一个字节
    with open(r'D:python_workspaceday8文件处理a','rb') as f:
        f.seek(0,2)  # 将光标移动到文件末尾
        while True:
            res = f.readline()
            if res:
                print("新增的文件内容:%s" % res.decode('utf-8'))
    with open(r'a','a',encoding='utf-8') as f:
        f.truncate(3)  # 接收的字节长度 整形
    # 修改文件
    # 先将数据由硬盘读到内存(读文件)
    # 在内存中完成修改(字符串的替换)
    # 在覆盖原来的内容(写文件)
    with open (r'D:python_workspaceday8文件处理	est.txt','r',encoding = 'utf-8') as f:
        data = f.read()
        print(data)
        print(type(data))
    
    with open (r'D:python_workspaceday8文件处理	est.txt','w',encoding = 'utf-8') as f:
        res = data.replace('哈喽','摩拜')
        print(data)
        f.write(res)

    优点:任意时间硬盘上只有一个文件,不会占用过多的硬盘空间

    缺点:当文件过大的时候,可能造成内存溢出

    # 创建一个新文件
    # 循环读取老文件内容到内存进行修改,将修改好的内容写到新文件中
    # 将老文件删除 将新文件的名改成老文件名
    import os
    with open (r'D:python_workspaceday8文件处理	est.txt','r',encoding = 'utf-8') as read_f,
        open (r'D:python_workspaceday8文件处理	est.swap','a',encoding = 'utf-8') as write_f:
        for line in read_f:
            new_line = line.replace('哈喽','摩拜')
            write_f.write(new_line)
    os.remove('test.txt')
    os.rename('test.swap','test.txt')

    优点:内存中始终只有一行内容,不占空间

    缺点:在某一时刻,硬盘上会同时存在两个文件

    函数

    def test():
        函数体
    print(test())

    可以通过变量名找到变量对应的值

    可以通过函数名+括号  找到函数体所对应的代码并执行

    函数名的命名规则跟变量名一样

    函数就是工具,并且函数必须先定义后调用(函数名+括号)

    dayehui
  • 相关阅读:
    MySQL表的完整性约束
    MySQL支持的数据类型
    MySQL表操作
    MySQL存储引擎概述
    onblur和onkeyup事件
    Web控件LinkButton
    jQuery防止中文乱码
    jQuery 动态添加、删除css样式
    VS2012生成Web时报未能找到元数据文件xxx.dll
    单击EasyUI的datagrid行时不选中
  • 原文地址:https://www.cnblogs.com/zrh-960906/p/11153781.html
Copyright © 2011-2022 走看看