• python_文件操作


    文件打开方式

    一种是读模式,一种是写模式,一种是追加模式

    open('a.txt',r) 读模式,只能读,不能写,打开不存在的文件会报错
    open('a.txt',w) 写模式,只能写不能读,会覆盖文件以前的内容,文件不存在的会创建
    open('a.txt',a) 追加模式,在原来文件的内容上增加新内容,文件不存在的会创建,只能写不能读

    open('a.txt',r+) 读写模式,写的时候直接从0的位置开始写,会把原来的值清除
    open('a.txt',w+) 写读模式 写的时候直接从0的位置开始写,会把原来的值清除
    open('a.txt',a+) 追加读模式
     
    总结:
    1、只要是r有关,打开不存在的文件都会报错。
    2、只要和w有关,都会清空原来的文件
    3、a+文件指针默认是在末尾的,如果想读到内容,先要把文件指针移动到最前面

    一、文件读取
    文件读取后指针位置发生变化,如果重复读取,需要指针归0
    f=open("a.txt","r",encoding="utf-8")
    print(f.read())  #读取全部
    print("=================")
    f.seek(0)
    print(f.readline()) #读取下一行
    print("=================")
    f.seek(0)
    print(f.readlines()) #读取全部并list返回
    
    
    D:studypython	estvenvScriptspython.exe D:/study/python/test/dd.py
    zhaozhao3,123456,2
    zhaozhao1,1234567,3
    zhaozhao2,123456,3
    zhaozhao6,123456
    
    =================
    zhaozhao3,123456,2
    
    =================
    ['zhaozhao3,123456,2
    ', 'zhaozhao1,1234567,3
    ', 'zhaozhao2,123456,3
    ', 'zhaozhao6,123456
    '] 

    二、文件写操作

    f=open("a.txt","w",encoding="utf-8") #擦除写模式
    li=["sfjkf
    ","slfjkf
    ","sjlsjf
    "]
    f.writelines(li) #可传入list
    f.writelines("xiaoxiao
    ") #可传入字符串
    f.write("zhaozhao6,123456") #只可传入字符串
    f.close()
    
    
    sfjkf
    slfjkf
    sjlsjf
    xiaoxiao
    zhaozhao6,123456

    三、指针位置

    seek:指针位置跳转

    tell:获取当前指针位置

    f=open("a.txt","a+",encoding="utf-8") #擦除写模式
    f.seek(0) #指针位置归0
    f.read() #读取文件,指针移动到结尾处
    point=f.tell() #获取指针位置
    f.seek(point) #跳到获取的指针位置
    f.write("sfsfdf")  #追加写
    f.close() #关闭文件

    四:其他操作

    f=open("a.txt","a+",encoding="utf-8") #擦除写模式
    f.seek(0)
    f.truncate() #文件清空
    f.close() #关闭文件

    五:文件with模式打开

    with方式打开一个或多个文件的写法,另外with打开无需再用close进行关闭文件

    with open("a.txt",encoding="utf-8") as f:
        f.read()
    
    with open ("a.txt",encoding="utf-8") as f ,open("b.txt",'a+',encoding="utf-8") as f2:
        f.read()
        f2.write("df")

    六、文件的修改

    文件的修改有2种方式,如下图:

    import  os
    #源文件读取到字符串中,修改后再写入源文件
    with open("a.txt",'a+',encoding="utf-8") as f:
        f.seek(0) #指针归0
        result=f.read() #读取文件内容到字符串
        content=result.replace("xiao","da") #修改文件内容
        f.seek(0) #指针归0
        f.truncate() #清除文件内容
        f.write(content) #把修改后的内容写入文件
    
    
    #逐行修改,且一个文件读,另外一个文件写,写完后,源文件删除,新文件重新命名为源文件名称
    f=open("a.txt",encoding="utf-8")
    f2=open("b.txt",'w',encoding="utf-8")
    for i in f:
        result=i.upper() #逐行文件内容改大写
        f2.write(result) #逐行写入第二个文件
    f.close() #关闭文件
    f2.close() #关闭文件
    os.remove("a.txt") #删除源文件
    os.rename("b.txt","a.txt") #重新命名第二个文件

    备注:打开文件如果带路径的建议加上r,防止路径字符转义

    例如:f=open(r"c:/study/a.txt",encoding="utf-8")

  • 相关阅读:
    ADO.NET访问Access2007的数据库 IErrorInfo.GetDescription failed with E_FAIL(0x80004005)
    Git工程实践
    来用java类模拟tensorflow工作流程
    Java异常处理之throw和声明throws·12
    Java异常之finally和多重捕获·11
    linux和windows如何查询自己本地出去的公网ip地址
    CentOS 6 EOL切换源
    P4782 【模板】2-SAT 问题
    P3834 【模板】可持久化线段树 2(主席树)
    P2671 [NOIP2015 普及组] 求和
  • 原文地址:https://www.cnblogs.com/xiaokuangnvhai/p/10945594.html
Copyright © 2020-2023  润新知