zoukankan      html  css  js  c++  java
  • python之文件操作

    python对文件的操作分三步:

      1.打开文件获取文件的句柄,

      2.通过文件句柄操作文件,

      3.关闭文件,

    A.文件基本操作:

    f = open('file.txt','r')#以只读的方式打开一个文件,获取文件句柄,如果只是读的话,r可以省略不写,默认就是只读的状态。

    在python2中,还有file()方法可以打开,python3中file()方法已经取消,只有open()方法。

    first_line = f.readline()#获取文件的第一行内容,返回一个list.

    print(first_line)#打印第一行的内容

    res = f.read()#获取除了第一行剩下的所有文件内容

    print(res)

    f.close()#关闭文件

    打开文件时候,需要指定文件路径和以何种方式打开,打开后,即可获取文件句柄,后面通过操作此文件句柄对该文件操作。

    打开文件的模式有:

      r:只读模式(默认)

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

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

    “”+“”表示可以同时读写某个文件,

      r+:【可读,可写,可追加,如果打开的文件不存在的话,会报错】

      w+:【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】

      a+:【追加读写模式,不存在则创建;存在则只追加内容】

    “U”表示在读取时,可以将 自动转换成 (r与r+使用方式一样)

      rU

      r+U

    "b"表示处理二进制文件(linux可以忽略,windows需要备注),例如:rb、wb、ab

    文件操作方法:

    f = open('file.txt','r+',encoding='utf-8')#以utf-8编码读取文件

    f.readline()#读取一行

    f.read()#读取文件中所有内容,大文件时不要用,因为会把整个文件内容读取放到内存中,内存不够用的话,内存会溢出,电脑死机

    f.readlines()#读取文件所有内容,返回一个list,元素是每行的数据,大文件时不要使用

    f.tell()#获取当前文件的指针指向

    f.seek(0)#把当前文件指向指定的位置

    f.write('谩语')#写入内容

    f.writelines(['谩语',‘夜归’])#将一个列表写入文件中

    f.truncate()#清空文件内容

    f.readable()#判断文件是否可读

    f.writeable()#判断文件是否可写

    f.fulsh()#写入文件后,立即从内存中把数据写入磁盘

    f.close()#关闭文件

    备注:大文件时候,读取文件的快速操作方法

    用上面的read()和readline()方法操作文件的话,会先把文件所有内容读取到内存中,这样的话,数据太多,电脑会非常卡。高效快速的方法是,读取一行操作一行,操作过的内容就直接从内存中释放了,其代码如下:

    f = open('file.txt','r+‘)

      for  line in f:

        print(line)

    这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

    with使用方法:

    在操作文件的时候,经常忘了关闭文件,这样的话就可以使用with,它会在使用完这个文件的句柄后,自动关闭这个文件,使用方式如下:

    with open('file.tsst','r') as f:

      for line in f:

        print(line)

    with open("file.txt")  as fr, open('file_bak','w') as fw:#这个是多文件操作,打开两个文件,fr是读file.txt文件,fw是新建一个file_bak文件

      for line in fr:#循环file.txt每一行

        fw.write(line)#写到file_bak文件中

    修改文件:

    修改文件的话,有两种方式,一种方式是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重写新的内容;第二种是把修改后的文件内容写到一个新的文件中

    第一种:

    with open('file.txt','r+') as fr:

      res = fr.read()

      new_res = res.replace('谩语',‘夜归’)

      fr.write(new_res)

    第二种:

    with open('file.txt') as fr, open('file_new','w') as fw:#这个是多文件操作,打开两个文件,fr是读file.txt文件,fw是新建一个file_bak文件

      for line in fr:#循环file.txt每一行

        new_line = line.replace('谩语',‘夜归’)

        fw.wirte(new_line)#写到file_bak文件中

    人生的旅途,前途很远,也很暗。然而不要怕,不怕的人的面前才有路。
  • 相关阅读:
    西电大第十六届程序设计竞赛 A-GRE
    浙南联合训练赛 B-Laptops
    STL之multimap
    Python编程练习:平方值格式化
    Python编程练习:使用 turtle 库完成玫瑰花的绘制
    Python编程练习:简单的闹钟提醒
    Python编程练习:使用 turtle 库完成叠边形的绘制
    Python编程练习:使用 turtle 库完成正方形的绘制
    Python编程练习:使用 turtle 库完成六边形的绘制
    Spark 介绍
  • 原文地址:https://www.cnblogs.com/ymany/p/8696539.html
Copyright © 2011-2022 走看看