zoukankan      html  css  js  c++  java
  • python 基础(文件)

    文件句柄:可简单理解为应该内存对象

    open()函数  参考 https://www.runoob.com/python3/python3-file-methods.html

    读、写、追加

     1 '''
     2 txt文件内容:
     3 I
     4 am
     5 very
     6 handsome
     7 '''
     8 #读(mode = r)
     9 f = open('test.txt','r',encoding='utf-8')
    10 x = f.readline() #读取文件的一行,这时文件句柄移动到下一行的位置
    11 x = f.readlines() #从文件句柄位置开始读取整个文件内容,并将每一行作为一个元素添加到一个列表
    12                   #当一个文件很大时readlines()是行不通的,他会把整个文件加载到内存,再执行后面的代码
    13                 #这回耗费很多时间和消耗大量的内存
    14 
    15 # 可以用读一行打印一行的方式加快文件的读取
    16 f.seek(0)  #将文件句柄挪到文件的开始位置
    17 for l in f:
    18     print(l.strip(),end=' ')
    19                                 #结果 I am very handsome
    20 
    21 #这个方法在一边读文件一边写文件是很有用的
    22 #写(mode = w) 如果目标文件不存在会创建一个,但是如果存在的话会把原文件内容删除,慎用!!!
    23 # 备份一个test.txt,名为test_bak.txt
    24 f.seek(0)
    25 f_w = open('test_bak.txt','w')  #encoding 默认utf-8
    26 for l in f:
    27     f_w.write(l)
    28 #完成备份
    29 #追加 (mode = a)在原文件的后面追加内容,是不可读的,如果文件不存在会创建一个
    30 f_a = open('test.txt','a')
    31 f_a.write('lalala')    #'lalala' 被添加到了test.txt的末尾
    32 f_a.close()
    33 f_w.close()
    34 f.close()

    读写、写读、追加读写

     1 '''
     2 txt文件内容:
     3 I
     4 am
     5 very
     6 handsome
     7 '''
     8 #读写(mode = r+)
     9 with open('test.txt','r+') as f_r_p,
    10     open('test_bak.txt','w+') as f_w_p,
    11     open('test_a.txt','a+') as f_a_p:
    12     '''
    13     用with语法可以省略最后的文件关闭操作,同时可以打开多个文件
    14     1.w+,还是会将原文件内容删除然后在进行写读等操作,慎用!!!
    15     2.r+,非常实用,但如果要对原文件直接更改是不行的,比如有'I am very handsome'这么一个
    16     字符串,如果想把'I'改为'You',见下面代码21-24行,发现打印的结果还是'I',没有变为想要替换
    17     的'You',因为在硬盘里的文件已经写死了,硬盘里的后面数据是不会随着前面的数据的变化而前
    18     后挪动的,所以要修改文件可以采用复制的方法,就是在创建一个文件,并将修改的内容写入新的
    19     文件。
    20     '''
    21     x = f_r_p.readline()
    22     x.replace('I
    ','You
    ')
    23     f_r_p.seek(0)
    24     print(f_r_p.readline())
    25     #将test.txt文件,第一行改为'You',并写入test_a.txt
    26     f_r_p.seek(0)
    27     for l in f_r_p:
    28         print(l,end='')
    29         if l=='I
    ':
    30             f_a_p.write('You
    ')
    31         else:
    32             f_a_p.write(l)

     二进制

    1 #二进制写(mode = wb)
    2 with open('bin.txt','wb') as f_wb:
    3     f_wb.write(b'i am bin')
    4 #二进制读(mode = rb)
    5 with open('bin.txt','rb') as f_rb:
    6     print(f_rb.readline())
  • 相关阅读:
    注册表修改大全(浏览文章时可以使用CTRL+F查找)
    怎样彻底删除系统服务项
    Linux查看文件编码格式及文件编码转换
    使用回收站主键名、索引名问题
    Aix5.3安装Bash Shell环境
    让AIX下的sqlplus也支持回显功能
    Oracle查看表空间使用率SQL脚本
    笔记本电脑内网、外网一起使用
    Oracle数据库为何出现乱码
    Oracle中varchar2(20)和varchar2(20 byte)区别
  • 原文地址:https://www.cnblogs.com/planBinary/p/11703360.html
Copyright © 2011-2022 走看看