• 读文件


    input函数
    
    
    input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,
    
    
    python的3.0以上版本中,只有input()函数了。
    
    #-------------------------------------------------------------------------------
    
    python中读写文件有2种方式:open函数和file类,其中open函数本身就是调用的file类,
    
    
    对于常规操作,官方推荐使用open函数替代file类。
    
    #-------------------------------------------------------------------------------
    
    open函数同时支持读写文件操作,使用不同的标识,表示不同的读写模式:
    
    
    x    写模式,新建一个文件,如果该文件已存在则会报错。
    
    
    r    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    
    
    w    打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    
    
    
    a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。
    
       
            也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    
    
    
    b    二进制模式。
    
    
    
    
    +    打开一个文件进行更新(可读可写)。同时支持读写模式。
    
    
    
    
    ========================================================================================
    
    路径:C:\Users\del\Desktop\问策.txt
    
    
    中华人民共和国
    美利坚俄罗斯欧洲
    非洲大陆
    123
    456
    789
    
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    在python中读取文件常用的三种方法:read(),readline(),readlines()
    
    
    一、read([size])方法
    
    read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象;
    
    read()直接读取字节到字符串中,包括了换行符;
    
    
    f = open('C:\\Users\\del\\Desktop\\问策.txt','r')
    
    print(f.read(2))
    print('-----------------')
    print(f.read(3))
    print('-----------------')
    print(f.read(4))
    
    
    执行结果:
    
    中华
    -----------------
    人民共
    -----------------
    和国                     #注意:换行符占用了一个字节
    ========================================================================
    
    
    f = open('C:\\Users\\del\\Desktop\\问策.txt','r')
    
    print(f.read())
    
    
    执行结果:
    
    
    
    中华人民共和国
    美利坚俄罗斯欧洲
    非洲大陆
    123
    456
    789
    
    
    ========================================================================
    
    
    二、readline()方法
    
    从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
    
    
    readline()  读取整行,包括行结束符,并作为字符串返回
    
    
    f = open('C:\\Users\\del\\Desktop\\问策.txt','r')
    
    print(f.readline())           #每执行一次,读出一行
    print(f.readline())
    
    
    执行结果:
    
    
    中华人民共和国
    
    美利坚俄罗斯欧洲
    
    =============================================================================
    
    
    三、readlines()方法
    
    读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
    
    
    特点:一次性读取整个文件;自动将文件内容分析成一个行的列表。
    
    
    readlines()读取所有行然后把它们作为一个字符串列表返回。
    
    
    
    f = open('C:\\Users\\del\\Desktop\\问策.txt','r')
    
    x = f.readlines()                   #得到一个列表
    print(x)
    
    print(x[0])
    print(x[1])
    print(x[2])
    
    
    
    执行结果:
    
    
    ['中华人民共和国\n', '美利坚俄罗斯欧洲\n', '非洲大陆\n', '123\n', '456\n', '789']
    
    中华人民共和国
    
    美利坚俄罗斯欧洲
    
    非洲大陆
    
    
    =====================================================================================
    
    
    with open('C:\\Users\\del\\Desktop\\问策.txt','r') as f:
        for line in f:
            print(line)
    
    
    
    执行结果:
    
    
    中华人民共和国
    
    美利坚俄罗斯欧洲
    
    非洲大陆
    
    123
    
    456
    
    789
    
    =========================================================================
    
    总结
    
    
    对于read():
    
    
    1、读取整个文件,将文件内容放到一个字符串变量中
    
    
    
    2、如果文件大于可用内存,不可使用这种处理
    
    
    
    
    
    对于readline():
    
    
    1、readline()每次读取一行,相对于readlines()要慢得多
    
    
    
    2、readline()返回的是一个字符串对象,并保存当前行的内容
    
    
    
    
    
    
    对于readlines():
    
    
    
    1、一次性读取整个文件,返回一个包含所有行的列表。
    
    
    
    2、当文件大小大于可用内存时,不宜使用。
    
    =======================================================================
    
    linecache是Python中很好用的一个工具,用以实现高效读取大文件内容或者需要经常访问的文件。
    
    linecache先把文件一次性读入到缓存中,在以后访问文件的时候,就不必要再从硬盘读取。
    
    
    使用前先载入linecache:
    
    
    import linecache
    
    
    -------------------------------------------------------------------------------
    
    
    import linecache
    
    text = linecache.getlines('C:\\Users\\del\\Desktop\\问策.txt')    #将文件所有内容以 行 形式读入
    
    print(text)          #其中lines为列表格式,正序存放了文件的每一行,filename为文件路径名。
    
    
    
    x = linecache.getline('C:\\Users\\del\\Desktop\\问策.txt',2)  #这一行数从1开始,不是0
    
    print(x)
    
    
    
    
    执行结果:
    
    ['123\n', '456\n', '789\n', '1\n', '2\n', '3\n', '4\n', '5\n', '6\n', '7\n', '8\n', '9\n', '0\n']
    
    456
    
    
    ==================================================================================================
    
    
    清除缓存:
    
    如果你不再需要先前从getline()中得到的行
    
    
    
    1、使用linecache.checkcache(filename)来更新文件在硬盘上的缓存,然后在执行linecache.getlines('a.txt')就可以获取到a.txt的最新内容;
    
    
    
    2、直接使用linecache.updatecache('a.txt'),即可获取最新的a.txt的最新内容
    
    
    
    
    另:读取文件之后你不需要使用文件的缓存时需要在最后清理一下缓存,使linecache.clearcache()清理缓存,释放缓存。
    
    =======================================================================================================
    
    
    f = open('C:\\Users\\del\\Desktop\\问策.txt','r')
    
    print(f.closed)       #文件是否被关闭   False
    
    
    print(f.name)    #文件路径或者文件名
    
    
    print(f.mode)       #只读模式
    
    #-------------------------------------------------------
    
    f.close()              #关闭文件
    
    print(f.closed)     #文件知否被关闭   True
    
    
    
    
    执行结果:
    
    
    False
    
    C:\Users\del\Desktop\问策.txt
    
    r
    
    True
  • 相关阅读:
    Python爬虫之selenium各种注意报错
    以后的路还很长
    巧学DBhelper
    怎么学习程序语言
    C# winform 实现图片轮播
    P6477 [NOI Online #2 提高组]子序列问题(民间数据) 题解
    NOI Online Round 2 TG 游记
    「EZEC」 Round1 开学信心赛 游记
    P6023 走路 题解
    P6022 快乐水 题解
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12069684.html
Copyright © 2020-2023  润新知