• Python—文件基本操作


    打开文件

        #’filename.txt'处指定文件路径,可以使用绝对路径和相对路径
        #mode='w'指定文件的打开方式
        #encoding='utf-8'指定文件编码
    f = open('filename.txt',mode='w',encoding='utf-8')
    
    f.close() #关闭文件,使用上面句柄打开文件后,文件会一直在内存中运行,在对文件进行操作后,应记得关闭文件
    
    ---------------------------------------------------------------------------
    #使用with关键字+open打开文件后,不用再使用close对文件进行关闭,并且可以同时打开多个文件,打开多个文件需要用逗号隔开,最后的句柄名称后需要加冒号
    with open('filename.txt',mode='w',encoding='utf-8') as f:#打开一个文件
    with open('filename.txt',mode='w',encoding='utf-8') as f,with open('filename.txt',mode='w',encoding='utf-8') as f1:#打开多个文件

    操作文件

    1.读

    # 此处filename.txt文件中原始内容为:人生苦短,我用python
    # ①r——只读,不存在报错
    with open('filename.txt', mode='r', encoding='utf-8') as f:
        content = f.read()
        print(content)
    >>> 人生苦短,我用python
    
    # ②rb——以bytes类型读
    with open('filename.txt', mode='rb') as f:
        content = f.read()
        print(content)
    >>> b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8python'
    
    # ③r+——读写,不存在不会创建,写会覆盖之前内容
    with open('filename.txt', mode='r+',encoding='utf-8') as f:
        content = f.read()
        f.write('
    新添加:Life is short , I use python')
        print(content)
    >>> 人生苦短,我用python
    # ④target_file.txt中的内容为:
    >>> 人生苦短,我用python
    >>> 新添加:Life is short , I use python
    
    # ⑤r+b——以bytes类型读写
    with open('filename.txt', mode='r+b') as f:
        content = f.read()
        f.write('
    新添加:Life is short , I use python'.encode('utf-8'))
        print(content)
    >>> b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8python'
    # target_file.txt中的内容为:
    >>> 人生苦短,我用python
    >>> 新添加:Life is short , I use python

    2.写

    # 此处filename.txt文件中原始内容为空,需要向其中写入:人生苦短,我用python
    # ①w——只写,不存在则创建,存在则清空再写
    with open('filename.txt', mode='w', encoding='utf-8') as f:
        content = f.write('人生苦短,我用python')
    # target_file.txt中的内容为:
    >>> 人生苦短,我用python
    
    
    # ②x——只写,不存在则创建,存在则报错
    with open('filename.txt', mode='x', encoding='utf-8') as f:
        content = f.write('人生苦短,我用python')
    # target_file.txt存在:
    >>> Traceback (most recent call last):
    >>>    File "D:/python_fullstack_s9/day8/practice.py", line 94, in <module>
    >>>      with open('target_file.txt', mode='x', encoding='utf-8') as f:
    >>>  FileExistsError: [Errno 17] File exists: 'target_file.txt'
    # filename.txt不存在:
    >>> 人生苦短,我用python
    
    # # ③wb——以bytes类型写
    with open('filename.txt', mode='wb') as f:
        content = f.write('人生苦短,我用python'.encode('utf-8'))
    >>> 人生苦短,我用python
    
    # # ④w+——写读,不存在则创建,写会覆盖之前的内容
    with open('filename.txt', mode='w+') as f:
        content = f.write('hello,world')
        date = f.read()
        print(date)
    >>>
    # filename.txt中的内容为:
    >>> hello,world
    
    # # ⑤w+b——以bytes类型写读
    with open('filename.txt', mode='w+b') as f:
        content = f.write('hello,world'.encode('utf-8'))
        date = f.read()
        print(date)
    >>> b''
    # filename.txt中的内容为:
    >>> hello,world

    3.追加

    # 此处filename.txt文件中原始内容为:人生苦短,我用python,需要在后面添加'谁用谁知道'内容
    # ①a——追加,不存在则创建,存在则追加
    with open('filename.txt', mode='a', encoding='utf-8') as f:
        content = f.write('谁用谁知道')
    filename.txt中的内容为:
    >>> 人生苦短,我用python谁用谁知道
    
    # ②ab——以bytes类型追加
    with open('filename.txt', mode='ab') as f:
        content = f.write('谁用谁知道'.encode('utf-8'))
    >>> 人生苦短,我用python谁用谁知道
    
    # ③a+——可读可写,不存在则创建,写则追加
    with open('filename.txt', mode='a+',encoding='utf-8') as f:
        content = f.write('谁用谁知道')
        f.seek(0)
        date = f.read()
        print(date)
    >>> 人生苦短,我用python谁用谁知道
    
    # ④a+b——以bytes类型可读可写
    with open('filename.txt', mode='a+b') as f:
        content = f.write('谁用谁知道'.encode('utf-8'))
        f.seek(0)
        date = f.read()
        print(date)
    >>> b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8pythonxe8xb0x81xe7x94xa8xe8xb0x81xe7x9fxa5xe9x81x93'
    # filename.txt中的内容为:
    >>> 人生苦短,我用python谁用谁知道

    4.其他操作

    ① seek() 移动光标指针位置

    seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

    ② tell() 返回当前指针所在的位置

    tell对于英文字符就是占一个,中文字符占三个,参数表示的是字节数区分与read()的不同.

    ③ truncate() 截断文件

    truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果

    ④ readline() 读取一行

    ⑤ readlines() 读取多行,返回为列表

    ⑥ readable() 文件是否可读

    ⑦ writeline() 写入一行

    ⑧ writelines() 写入多行

    ⑨ writable() 文件是否可读

    ⑩ closed() 文件是否关闭

    ⑪ encoding=’utf-8’ 如果文件打开模式为b,则没有该属性

    ⑫ flush() 立刻将文件内容从内存刷到硬盘

    ⑬ for循环文件句柄

    with open('filename.txt', mode='r',encoding='utf-8') as f:
        for i in f:
            print(i)
    >>> 人生苦短,我用python
    >>> 谁用谁知道
  • 相关阅读:
    RaisedButton
    Icon
    RichText
    GridView
    HTML常用标签
    HTML语法
    HTML简史
    17_继承
    16_Math
    16_ArrayList
  • 原文地址:https://www.cnblogs.com/NeroCl/p/8118155.html
Copyright © 2020-2023  润新知