zoukankan      html  css  js  c++  java
  • python之file 方法

    file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

    1    file.close()  

    close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。

    当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "wb")
    print ("文件名为: ", fo.name)
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    没有这个文件,会自动创建

    2    file.flush()

    flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

    一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "wb")
    print ("文件名为: ", fo.name)
    
    # 刷新缓冲区
    fo.flush()
    
    # 关闭文件
    fo.close()

    3    file.fileno()
        返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "wb")
    print ("文件名为: ", fo.name)
    fid = fo.fileno()
    print ("文件描述符为: ", fid)
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    文件描述符为:  3

    4    file.isatty()
        如果文件连接到一个终端设备返回 True,否则返回 False。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "wb")
    print ("文件名为: ", fo.name)
    
    ret = fo.isatty()
    print ("返回值 : ", ret)
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    返回值 :  False

    5    file.next()
      next() 方法在文件使用迭代器时会使用到,在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发

    fo = open("file.txt", "r")
    print ("Name of the file: ", fo.name)
    
    try:
      for index in range(5):
        line = next(fo)
        print ("Line No %d - %s" % (index, line))
    except StopIteration:
      print ('fiel is end ')
    # Close opened file
    fo.close()
    结果:
    Name of the file:  file.txt
    Line No 0 - 1
    Line No 1 - 2
    Line No 2 - 3
    Line No 3 - 4
    fiel is end 

    6    file.read([size])
        从文件读取指定的字节数,如果未给定或为负则读取所有。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    line = fo.read()
    print ("读取的字符串: %s" % (line))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取的字符串: 1
    2
    3
    4

    7    file.readline([size])
    readline() 方法用于从文件读取整行,包括 " " 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 " " 字符。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    line1 = fo.readline()
    print ("读取第一行 %s" % (line1))
    
    line2 = fo.readline(5)
    print ("读取的字符串为: %s" % (line2))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取第一行 1isanumber
    
    读取的字符串为: 2stri

    8    file.readlines([sizeint])

    readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。

    如果碰到结束符 EOF 则返回空字符串

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    for line in fo.readlines():      #依次读取每行  
        line = line.strip()          #去掉每行头尾空白  
        print ("读取的数据为: %s" % (line))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取的数据为: 1isanumber
    读取的数据为: 2string
    读取的数据为: 3
    读取的数据为: 4

    9    file.seek(offset[, whence])
      seek() 方法用于移动文件读取指针到指定位置。

    • offset -- 开始的偏移量,也就是代表需要移动偏移的字节数

    • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    line = fo.readline()
    print ("读取的数据为: %s" % (line))
    
    # 重新设置文件读取指针到开头
    fo.seek(0,0)
    line = fo.readline()
    print ("读取的数据为: %s" % (line))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取的数据为: 1isanumber
    
    读取的数据为: 1isanumber

    10    file.tell()
        tell() 方法返回文件的当前位置,即文件指针当前位置。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    line = fo.readline()
    print ("读取的数据为: %s" % (line))
    
    # 获取当前文件位置
    pos = fo.tell()
    print ("当前位置: %d" % (pos))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取的数据为: 1isanumber
    
    当前位置: 11

    11    file.truncate([size])
        truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "r+")
    print ("文件名为: ", fo.name)
    
    line = fo.readline()
    print ("读取的数据为: %s" % (line))
    
    # 截断剩下的字符串
    fo.truncate(3)      --这个不传数值,不起作用,整个文件
    
    # 尝试再次读取数据
    line = fo.readline()
    print ("读取数据: %s" % (line))
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    读取的数据为: 111111111111111
    
    读取数据: 222222222222

    但是file.txt 文件中只剩下111

    12    file.write(str)

    write() 方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。

    如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not 'str'。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "w")
    print ("文件名为: ", fo.name)
    
    str = "python3"
    fo.write( str )
    
    # 关闭文件
    fo.close()
    结果:
    [python@master zhang]$ more file.txt 
    python3

    13    file.writelines(sequence)

    writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 。

    # -*- coding: UTF-8 -*-
    
    # 打开文件
    fo = open("file.txt", "w")
    print ("文件名为: ", fo.name)
    
    seq = ["python2 1
    ", "python3 2"]
    fo.writelines( seq )
    
    # 关闭文件
    fo.close()
    结果:
    文件名为:  file.txt
    [python@master zhang]$ more file.txt 
    python2 1
    python3 2

    优秀的判断力来自经验,但经验来自于错误的判断。

  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/hello-wei/p/9636729.html
Copyright © 2011-2022 走看看