您的位置:首页 > 编程语言 > Python开发

python基础 & 读写文件

2020-03-11 12:17 253 查看

1、open函数用来打开文件

  • open(name[, mode[, buffering]]) 打开文件可传的参数
  1. open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。
  2. 模式(mode)和缓冲(buffering)参数都是可选的
  • 打开文件的模式有

    r,只读模式(默认)。

  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】

  • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】

  • 注: “+” 表示可以同时读写某个文件

    w,只写模式。【不可读;不存在则创建;存在则删除内容;】

  • w+,写读

  • a+,同a

  • with语句

      作用:将打开文件写在with中当对文件操作完成后with语句会自动帮关闭文件,避免忘记写f.close()
    with open("data1.txt",'r',encoding = 'utf-8') as f:
    for line in f:
    print(line)

    2、三种读操作比较

    1. readline()每次读取一行,当前位置移到下一行

    2. readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素

    3. read(size)从文件当前位置起读取size个字节,如果不加size会默认一次性读取整个文件(适用于读取小文件)

    #1. read()一次读取所有内容
    '''aaa111
    bbb222'''
    f = open(r"data.txt")
    print(f.read())
    f.close()
    
    #2. readline(),每次只读取一行,光标下移
    '''
    0: aaa111
    
    1: bbb222
    '''
    f = open(r"data.txt")
    for i in range(2):
    print(str(i) + ": " + f.readline(),)
    
    #3. 一次读取所有,每行作为列表的一个值
    '''['aaa111\n', 'bbb222\n']'''
    f = open(r"data.txt")
    print(f.readlines())

    3、使用read()读文件

    1. read(n)读取指定长度的文件

    f = open(r"somefile.txt")
    print(f.read(7))        # Welcome        先读出 7 个字符
    print(f.read(4))        #‘ to ‘                接着上次读出 4 个字符
    f.close()

    2. seek(offset[, whence]) 随机访问
     
     作用:从文件指定位置读取或写入

    f = open(r"somefile.txt", "w")
    f.write("01234567890123456789")
    f.seek(5)
    f.write("Hello, World!")
    f.close()
    f = open(r"somefile.txt")
    print(f.read())                 # 01234Hello, World!89

    3. tell 返回当前读取到文件的位置下标

    f = open(r"somefile.txt")
    f.read(1)
    f.read(2)
    print(f.tell())             # 3     3就是读取到文件的第三个字符

    4、readline()读文件

    作用:readline 的用法,速度是fileinput的3倍左右,每秒3-4万行,好处是 一行行读 ,不占内存,适合处理比较大的文件,比如超过内存大小的文件

    f1 = open('test02.py','r')
    f2 = open('test.txt','w')
    while True:
    line = f1.readline()
    if not line:
    break
    f2.write(line)
    f1.close()
    f2.close()

    5、readlines()读文件

    作用:readlines会把文件都读入内存,速度大大增加,但是木有这么大内存,那就只能乖乖的用readline

    f1=open("readline.txt","r")
    for line in f1.readlines():
    print(line)

    6、将data1.txt中内容读取并写入到data2.txt中

    f1 = open('data1.txt','r')
    f2 = open('data2.txt','w')
    
    for line in f1:
    f2.write(line)
    
    f1.close()
    f2.close()

    7、使用eval()方法将文件读取成字典

    f = open('data1.txt')
    f1 = (f.read())
    data = eval(f1)
    f.close()
    print(data)         # 运行结果: {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}

    8、将文件内容读取成列表

    lock = []
    f = open("password.txt")
    for name in f.readlines():
    lock.append(name.strip('\n'))
    print(lock)
    运行结果: ['aaa 111', 'bbb 222', 'ccc 333']

    经典面试题:现在有一个5G的文件,用python写入另一个文件里

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    def read_big_file_v(fname):
    block_size = 1024 * 8
    with open(fname,encoding="utf8") as fp:
    while True:
    chunk = fp.read(block_size)
    # 当文件没有更多内容时,read 调用将会返回空字符串 ''
    if not chunk:
    break
    print(chunk)
    path = r'C:\aaa\luting\edc-backend\tttt.py'
    read_big_file_v(path)
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    Hanmin_hm 发布了29 篇原创文章 · 获赞 1 · 访问量 676 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: