美文网首页Python进阶之路
python基础-10-文件操作

python基础-10-文件操作

作者: 162f127842fc | 来源:发表于2017-11-16 21:03 被阅读11次

    1.文件的输入输出

    #1.打开文件 open 函数
    open(file,[option])
    #file 是要打开的文件
    #option是可选择的参数,常见有 mode  等
    
    #2.文件的打开模式
    r 只读模式,文件不存在时会报错。
    w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件。
    x 写入模式,文件存在会报错,文件不存在则会新建文件。
    a 追加写入模式,不清空之前的文件,直接将写入的内容添加到后面。
    b 以二进制模式读写文件,wb,rb,ab。
    + 可读写模式,r+,w+,x+,a+,这几种模式还遵循了r,w,x,a的基本原则。
    
    f=open("test.txt","r")
    f=open("test.txt","w")  #相对路径
    f=open("test.txt","x")
    f=open(r"E:\learn\test.txt","w") #绝对路径,r关键字转义
    f=open("E:\\learn\\test.txt","w") #绝对路径 ,双斜杠转义
    
    
    #3.文件的读取
    
    '''
    #内容
    aaabbb
    人生苦短,我用Python
    #编码
    f=open("test.txt","r+") #加上+号,可以读的权限
    f.read() #Python读文件,读完需要重置光标或者重新打开一次文件
    '''
    
    f.read(size)  #读取文件的内容,将文件的内容以字符串形式返回。
    '''size是可选的数值,指定字符串长度,如果没有指定size或者指定为负数,就会读取并返回整个文件。当文件大小为当前机器内存两倍时就会产生问题,反之就尽可能大的size读取和返回数据,如果到了文件末尾,会返回空字符串。
    '''
    >>> f.read(2)
    'aa'
    
    f.readline() #从文件中读取单独一行。
    '''字符串结尾会自动加上一个换行符\n,只有当文件最后没有以换行符结尾时,这一操作才会被忽略,这样返回值就不会有混淆。如果返回空字符串,表示到达率文件末尾,如果是空行,就会描述为\n,一个只有换行符的字符串。
    '''
    >>> f.readline()
    'aaabbb\n'
    >>> f.readline()
    '人生苦短,我用Python'
    
    
    f.readlines() #一次读取所有,返回一个列表,列表的元素为文件行的内容。
    '''可以通过列表索引的方式将文件的每一行的内容输出。
    可以通过for循环迭代输出每一行的信息。'''
    >>> f.readlines()
    ['aaabbb\n', '人生苦短,我用Python']
    
    
    
    
    #4.文件的写入
    f.write()        #将要写入的内容以字符串的形式通过write方法写入文件中。
    '''
    >>> f=open("test.txt","w+")
    >>> f.write("test")
    4
    >>> f.flush()
    
    '''
    f.writelines()  #括号里必须是由字符串元素组成的序列。
    '''
    >>> f=open("test.txt","w+")
    >>> li=["life","is","short",",you","need","python"]
    >>> f.writelines(li)
    >>> f.flush()
    >>> f.read()
    ''
    >>> f.seek(0)
    0
    >>> f.read()
    'lifeisshort,youneedpython'
    '''
    #5.保存和关闭
    f.flush()
    #在读写模式下,当写完的数据想要读取出来时,要先缓存区的内容保存到文件当中。
    
    f.close() 
    #关闭文件。对一个已经关闭的文件进行操作会报错。
    
    
    #6.光标位置
    f.tell()            #返回光标在文件中的位置。
    >>> f.tell()   #查看当前,光标所在位置
    28
    
    f.seek(offset,from) #常用 f.seek(0) 返回起始位置
    >>> f.seek(0)  #汉字占用两个字节,英文一个字节
    0
    
    #在文件中移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节。
    # 常用 f.seek(0,0)  返回起始位置。 其他了解一下
    >>> f.seek(0,0) #回到起始位置
    0
    
    #7.查看文件信息
    closed        #查看文件是否已经关闭,返回布尔值。
    >>> f.closed
    False
    
    mode        #返回文件打开模式。
    >>> f.mode
    'w+'
    
    name        #返回文件名。
    >>> f.name
    'test.txt'
    
    encoding #编码格式
    >>> f.encoding
    'cp936'
    
    #8.with 形式打开文件,里面的语句执行完后会自动关闭文件
    with open('文件名') as f:
        f.read() 
    '''
    #扩展操作
    >>> with open("test.txt","w+") as f:
        f.write("哈哈") #无需flush,自动关闭IO
    2
    '''
    

    2.异常语法

    #打开shell,按F1查看帮助文档
    try:
        suite1            #测试语句块
    except exception1:
        suite2            #如果测试语句suite1中发生exception1异常时执行
    except (exception2,exception3):
        suite3          #如果测试语句suite1中发生元组中任意异常时执行
    except exception4 as reason:    #as把异常的原因赋值给reason
        suite4          #如果测试语句suite1发生exception4的异常时执行
    except:
        suite5          #如果测试语句suite1发生异常在所列出的异常之外时执行
    else:
        suite5          #如果测试语句块suite1中没有发生异常时执行
    finally:
        suit6          #不管测试语句suite1中又没有发生异常都会执行
        
    '''
    注意:中间的except,else,finally都是可选的,但至少有一个,不然try就没有意义了,根据实际中的需求来选择。
    所有错误类型都继承自BaseException
    https://docs.python.org/3/library/exceptions.html#exception-hierarchy
    '''
    '''
    #coding:
    try:
        b%d
    ##except NameError:#参数未定义
    ##except TypeError:#类型错误
    except Exception:#异常基类,捕捉所有的异常
        print("报错了")
    else:#代码没有报错会执行
        print("没有错误")
    finally:#不管报不报错,都会执行
        print("不管你报不报错,我都要执行")
    a=1
    '''
    #注意:如果抛出父类异常,在子类不会再获取,如下:
    try:
        fun()
    except Exception as e:
        raise Exception
    except ImportError as e:
        raise ImportError
    finally:
        pass
        
    '''
    在上面的例子中,下面的ImportError就不会被抛出,应为ImportError继承Exception,但是可以把Exception放在后面是可以的
    e可以得到系统给出的报错信息
    '''
    '''
    try:
        a=input("输入数字:")
        if a.isdigit():
            print()
        else:
            raise TypeError
    except Exception:#异常基类,捕捉所有的异常
        print("你输入错误")
    '''
    assert #断言
    '''
    测试表示式,其返回值为假,就会触发异常
    '''
    
    assert 1==1    #没有返回值
    assert 1==2    #返回AssertionError
    '''
    >>> assert 1>2  #断言,如果返回False就会报错
    Traceback (most recent call last):
      File "<pyshell#82>", line 1, in <module>
        assert 1>2
    AssertionError
    '''
    

    相关文章

      网友评论

        本文标题:python基础-10-文件操作

        本文链接:https://www.haomeiwen.com/subject/ycvrvxtx.html