zoukankan      html  css  js  c++  java
  • Python自学之路-python文件操作

    二、open函数和open with

    Ⅰ、open

    格式:open("路径","打开方式") 

    打开方式:'r'只读模式, ‘w’写模式,

                     ‘a’追加模式 ,‘b’二进制模式,‘+’读/写模式。

    例子1:向文件写入“hello world!!!”,文件不存在就创建

    fh=open("d:/file1.txt","w")
    words1="hello world!!!"
    fh.write(words1)
    fh.close()

    例子2:读取d盘file1.txt文件的内容

    fh2=open("d:/file2.txt","r")
    data2=fh2.read()
    print(data2)
    >>输出 hello world!!!

    例子3:统计文件中一行存在test的行数

    count=0
    fp=open("e:\file.txt","r",encoding="utf-8")
    lines=fp.readlines()
    for i in lines:
        if "test" in i:
            print(i)
            count+=1
    print(count)

    Ⅱ、with open as

    open读写时,每次读写完之后,都要f.close()关闭文件,但是实际中,文件读写可能产生IOError,一旦出错,后面的f.close()就不会调用,python

    中的with语句用法可以解决这个问题

    with open('../dataconfig/test.json',encoding='utf-8') as f:
        print(f.read())
    输出结果:
    hello
    我们
    326342
    

    打开多个文件进行操作

    with open('../dataconfig/test.json',encoding='utf-8') as f1,open('../dataconfig/test1.json',encoding='utf-8') 
    as f2,open('../dataconfig/test2.json',encoding='utf-8') as f3: for i in f1: j = f2.readline() k = f3.readline() print(i.strip(),j.strip(),k.strip())

    三、read和readlines()

    Ⅰ、read

    read()将文件中的内容全部读取出来,弊端 如果文件很大就会非常的占用内存,容易导致内存奔溃

    f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg = f.read(3)
    msg1 = f.read()
    f.close()
    print(msg)
    print(msg1)
    
    结果: 
    高圆圆
    
    刘亦菲
    张柏芝
    杨紫
    王菲
    

    Ⅱ、readline():readline()读取每次只读取一行

    注意点:readline()读取出来的数据在后面都有一个

    f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg1 = f.readline()
    msg2 = f.readline()
    msg3 = f.readline()
    msg4 = f.readline()
    f.close()
    print(msg1)
    print(msg2)
    print(msg3)
    print(msg4)
    
    结果:
    高圆圆
    
    刘亦菲
    
    张柏芝
    
    杨紫
    

    解决这个问题只需要在我们读取出来的文件后边加一个strip()就OK了

    Ⅲ、readlines()

    readlines() 返回一个列表,列表里面每个元素是原文件的每一行,如果文件很大,占内存,容易崩盘

    f = open('log',encoding='utf-8')
    print(f.readlines())
    f.close()
    # 结果['666666
    ', 'fkja l;
    ', 'fdkslfaj
    ', 'dfsflj
    ', 'df;asdlf
    ', '
    ', ]
    

    Ⅳ、for循环读取

    可以通过for循环去读取,文件句柄是一个迭代器,他的特点就是每次循环只在内存中占一行的数据,非常节省内存

    f = open('../path1/弟子规',mode='r',encoding='utf-8')
    for line in f:
        print(line)      #这种方式就是在一行一行的进行读取,它就执行了下边的功能
    
    print(f.readline())
    print(f.readline())
    print(f.readline())
    print(f.readline())
    f.close()
  • 相关阅读:
    提取轮廓后的画图处理
    提取视频中的前景物体
    写入视频帧
    处理视频序列
    视频读写
    三维重建-相机标定
    图像拼接相关
    计算两幅图像之间的单应矩阵
    ransac算法(随机抽样一致性)
    图像间投影关系
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/13306694.html
Copyright © 2011-2022 走看看