zoukankan      html  css  js  c++  java
  • python文件流

    打开文件

    文件的基本方法

    迭代文件内容

    打开文件

    打开文件,可以使用自动导入的模块io中的函数open。函数open将文件名作为唯一必不可少的参数,并返回一个文件对象。如果只指定一个文件名,则获得一个可读取的文件对象。

    如果当前目录中有此文件则可以打开,如果位于其他位置则需要指定完整的路径,如果指定文件不存在,则如下报错。

    文件模式

    如果需要写入文件,则需要通过指定模式。函数open的参数模式常见有如下:

    模式

    描述

    'r'

    读取模式(默认)

    'w'

    写入模式(文件不存在时创建它)

    't'

    文本模式(默认,与其他模式结合使用)

    'x'

    独占写模式,新建一个文件,如果该文件已存在则会报错。

    'a'

    附加模式(在既有文件末尾继续写入)

    'b'

    二进制模式(与其他模式结合使用)

    '+'

    打开一个文件进行更新(可读可写,与其他模式结合使用)

    默认模式为'rt',读取时将自动替换其他行尾字符(' ',' '),写入时将' '替换为系统的默认行尾字符(os.linesep)

    要打开一个文本文件进行读写,可使用'r+',但是会将既有内容删除,而'w+'不会。

    文件的基本方法

    读取和写入

    管道重定向输出

    随机存取

    读取和写入行

    关闭文件

    文件最重要的功能就是提供和接收数据。在文本和二进制模式下,基本上分别将str和bytes类用作数据。

    读取和写入:

    使用read读取数据,默认读取全部内容。还可以指定参数,然后读取剩下的全部内容:

    管道重定向输出

    将一个命令的标准输出链接到下个命令的标准输入:

    #cat some.txt
    
    you are bad boy
    
     
    
    #cat some.py
    
    #!/usr/bin/evn python3
    
    # 计算sys.stdin中包含多少个单词的脚本
    
    import sys
    
    text = sys.stdin.read()
    
    words = text.split()
    
    wordcount = len(words)
    
    print(wordcount)
    
     
    
    #cat some.txt | python3 some.py
    
    4

    随机存取

    可以使用方法seek和tell。

    seek(offset,[, whence])将当前位置移到offset(指定字节数)和whence指定的地方(参数whence默认为io.SEEK_SET(0),偏移量是相对于文件开头的,而io.SEEK_SET(1),相对于当前位置进行移动,io.SEEK_SET(2),相对于文件末尾进行移动)

    tell()返回当前位于文件的什么位置。

    对行的读取和写入

    可以使用方法readline,不指定参数默认读取一行并返回,指定参数为最多读取多少个字符。要读取文件中所有的行,并以列表的方式返回它们,可以使用方法readlines。方法writelines接受一个字符串列表写入文件中。

    # 修改文件

    关闭文件

    避免锁定文件以防止修改,避免用完系统可能指定的文件打开配额。

    确保文件关闭,可以使用try/finally语句。

    try# 将数据写入到文件中
    
    finally:
    
    file.close()
    
    
    # with语句可以让你打开一个文件并赋值到一个变量,到达该句末尾时,将自动关闭文件,即便出现异常。
    
    with open('somefile.txt') as somefile
    
      do_something(somefile)

    迭代文件内容

    def process(string):
    print('Processing:', string)
    
    # 每次迭代一个字符
    with open('fileone.txt') as f:
      while True:
            char = f.read(1)
      if not char: break
      process(char)
    
    #每次迭代一行字符
    with open('fileone.txt') as f:
        while True:
        line = f.readline()
                                                                                                                                                              process(line)
    
    #读取所有内容,使用read
    with open('fileone.txt') as f:                                                                                                                                                                                          for char in f.read():
        process(char)
    
    #使用readlines
    with open('fileone.txt') as f:                                                                                                                                                                                                                                    for char in f.readlines():
        process(char)
    
    # 使用fileinput实现延迟迭代,读取实际需要文本的部分
    import fileinput
    for line in fileinput.input('fileone.txt'):
        process(line)
     

    文件迭代器

    迭代文件

    with open('fileone.txt') as f:
      
    for line in f:
      process(line)

    不将文件对象赋给变量迭代文件

    for line in open(fileone.txt):
        process(line)

    对迭代器的操作也可以对文件做,如list(open(fileone.txt)):

    >>> f = open('fileone.txt', 'w')
    
    >>> print('First', 'line', file=f)
    
    >>> print('Second', 'line', file=f)
    
    >>> f.close()
    
    
    >>> lines = list(open('fileone.txt'))
    
    >>> lines
    
    ['First line
    ', 'Second line
    ']
  • 相关阅读:
    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
    002 01 Android 零基础入门 01 Java基础语法 01 Java初识 02 Java简介
    001 01 Android 零基础入门 01 Java基础语法 01 Java初识 01 导学
    001 Android Studio 首次编译执行项目过程中遇到的几个常见问题
    Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
    Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验
    监视EntityFramework中的sql流转你需要知道的三种方式Log,SqlServerProfile, EFProfile
    轻量级ORM框架——第二篇:Dapper中的一些复杂操作和inner join应该注意的坑
    轻量级ORM框架——第一篇:Dapper快速学习
    CF888G Xor-MST(异或生成树模板)
  • 原文地址:https://www.cnblogs.com/whych/p/9678249.html
Copyright © 2011-2022 走看看