zoukankan      html  css  js  c++  java
  • 文件处理

    打开文件

    f = open('somefile.txt')

    如果文件处于其他地方,可指定全名

    打开文件的模式:
    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    字符 | 含义

    'r' | 读取(默认值)
    'w' | 写入,并先截断文件(对文件从头开始写,已有的文件丢失)
    'x' | 排它性创建,如果文件已存在则失败,独占模式
    'a' | 写入,如果文件存在则在末尾追加
    'b' | 二进制模式(图片之类的)与其他模式结合
    't' | 文本模式(默认,与其他模式结合
    '+' | 更新磁盘文件(读取并写入),与其他模式结合

    默认的模式是 'r' (打开并读取文本,同 'rt' )。对于二进制写入, 'w+b' 模式打开并把文件截断成 0 字节; 'r+b' 则不会截断
    '+'可与其他任何模式结合起来使用,表示既可读取也可写入,要打开一个文本文件进行读写,可使用'r+' ,
    'r+'和'w+'之间有个重要差别:后者截断文件,而前者不会这样做。

    默认情况下,行以' '结尾,Python使用通用换行模式。
    能够识别所有合法的换行符(' '、' '和' ')。如果要使用这种模式,同时禁止自动转换,可将关键字参数newline设置为空字符串,如open(name, newline='')。如果要指定只将' '或' '视为合法的行尾字符,可将参数newline设置为相应的行尾字符。这样,读取时不会对行尾字符进行转换,但写入时将把' '替换为指定的行尾字符。

    如果文件包含非文本的二进制数据,只需使用二进制模式(如'rb')来禁用与文本相关的功能

    文件的基本方法

    1,读取和写入

    f = opne('sometext.txt','w')
    f.write('hello   ,')
    f.close()
    
    
    f = opne('sometext.txt','r')
    f.read(4)
    f.close()
    读取4个字符
    

    2,使用管道重定向
    cat somefile.txt | python somescript.py | sort

    # somescript.py 
    import sys 
    text = sys.stdin.read() 
    words = text.split() 
    wordcount = len(words) 
    print('Wordcount:', wordcount) 
    
    

    str.split(sep=None, maxsplit=-1)
    返回一个由字符串内单词组成的列表,使用 sep 作为分隔字符串
    str.split()
    如果给出了 sep,则连续的分隔符不会被组合在一起而是被视为分隔空字符串 (例如 '1,,2'.split(',') 将返回 ['1', '', '2'])。 sep 参数可能由多个字符组成 (例如 '1<>2<>3'.split('<>') 将返回 ['1', '2', '3'])。 使用指定的分隔符拆分空字符串将返回 ['']

    如果 sep 未指定或为 None,则会应用另一种拆分算法:连续的空格会被视为单个分隔符,其结果将不包含开头或末尾的空字符串,如果字符串包含前缀或后缀空格的话。 因此,使用 None 拆分空字符串或仅包含空格的字符串将返回 []

    随机存取

    文件对象的两个方法:seek 和 tell。

    方法 seek(offset[, whence])将当前位置(执行读取或写入的位置)移到 offset 和whence 指定的地方。参数 offset 指定了字节(字符)数,而参数 whence 默认为 io.SEEK_SET(0),这意味着偏移量是相对于文件开头的(偏移量不能为负数)。参数 whence 还可设置为 io.SEEK_CUR(1)或 io.SEEK_END(2),其中前者表示相对于当前位置进行移动(偏移量可以为负),而后者表示相对于文件末尾进行移动

    >>> f = open(r'C:	extsomefile.txt', 'w') 
    >>> f.write('01234567890123456789') 
    20 
    >>> f.seek(5) 
    5 
    >>> f.write('Hello, World!') 
    13 
    >>> f.close() 
    >>> f = open(r'C:	extsomefile.txt') 
    >>> f.read() 
    '01234Hello, World!89‘
    

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

    >>> f = open(r'C:	extsomefile.txt') 
    >>> f.read(3) 
    '012' 
    >>> f.read(2) 
    '34' 
    >>> f.tell() 
    5 
    

    读取后只能往后步进,无法再重新读取已经访问过的位置。

    读取和写入行

    要读取一行(从当前位置到下一个分行符的文本),可使用方法readline。调用这个方法时,可不提供任何参数(在这种情况下,将读取一行并返回它);也可提供一个非负整数,指定readline最多可读取多少个字符。因此,如果some_file. readline()返回的是'Hello, World! ',那么some_file.readline(5)返回的将是'Hello'。要读取文件中的所有行,并以列表的方式返回它们,可使用方法readlines。

    方法writelines与readlines相反:接受一个字符串列表(实际上,可以是任何序列或可迭代对象),并将这些字符串都写入到文件(或流)中。请注意,写入时不会添加换行符,因此你必须自行添加.

    >>> f = open(r'C:	extsomefile.txt') 
    >>> lines = f.readlines() 
    >>> f.close() 
    >>> lines[1] = "isn't a
    " 
    >>> f = open(r'C:	extsomefile.txt', 'w') 
    >>> f.writelines(lines) 
    >>> f.close() 
    

    迭代文件内容

    每次一行

    with open(filename) as f: 
     while True: 
     line = f.readline() 
     if not line: break 
     process(line)
    

    另外一种方法

    with open('area.ini', 'r')  as f : 
        for  line in f.readlines(): print(line) 
    

    fileinput 实现延迟行迭代

    减少内存占用

    import fileinput 
    for line in fileinput.input(filename): 
     process(line)
    

    文件迭代件

    with open('area.ini', 'r')  as f : 
        for  line in f : print(line)
    
    或:
    for line in  open('area.ini', 'r') : print(line)
    
    

    文件读写

    I/O
    打开文件:
    open(name[.mode[.buffering]])

    文件不存在则报错.

    文件模式:

    b参数处理二进制文件音乐文件或图像

    文件缓冲区:

    文件读取:
    分为按字节和行读取, 方法有 read() readlines() close()

    read() 一次性读取到内存
    cloase() 必须关闭文件

    文件写入

  • 相关阅读:
    docker安装与使用路径
    python3.7简单的爬虫
    ubuntu19.04下查看软件安装目录和详细信息
    Javascript检查对象是否存在某个属性
    bootstrap源码和测试
    python学习笔记之pdb调试
    pydensecrf安装报错1、UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 29: invalid start byte2、 LINK : fatal error LNK1158: 无法运行“rc.exe” error: command 'D:\software\vs2015\VC\BIN
    python学习日记:np.newaxis
    好用的网址集锦
    网络配置ipconfig /release、ipconfig /renew
  • 原文地址:https://www.cnblogs.com/g2thend/p/11819481.html
Copyright © 2011-2022 走看看