• Python3.x基础学习-文件基本操作和with用法


    文件基本操作


    1 什么是文件
    侠义说:文本文件:广义说:超文本文件,图片,声音,超链接,视频
    2.文件的分类 文件大体上可以分为两类,文本文件和二进制文件
    3.文件的作用 使用文件的目的是把一些数据存储存放起来
    4.使用文件的流程
    我们操作文件的流程一般是 打开文件,读写文件,关闭文件。通过程序操作文件的流程也是这三步
    首先打开文件,然后读写文件,最后关闭文件

    写文件
    file = open('test1.py',mode='w')
    file.write('hello johnson')
    file.close()
    #
    # # 写入中文
    # # python读写用的是gbk编码,pycharm用的是utf-8
    #
    file = open('test.txt',mode='w',encoding='utf-8')
    file.write('我叫强森,俗称你爸爸')
    file.close()

    # wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除
    # 如果该文件不存在,即创建新文件。一般用于非文本文件如图片
    file = open('test.txt','wb')
    file.write(b'xe6x88x91xe5x8fxabxe5xbcxbaxe6xa3xaexefxbcx8cxe4xbfx97')
    file.close()

    # w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,
    # 即 原有内容会被删除。如果该文件不存在,创建新文件。

    file = open('test.txt','w')
    file.write('zheshigeshenmewanyi')
    file.close()
     
    读文件
    file = open('test.txt',mode='r',encoding='utf-8')
    print(file.read())
    file.close()

    # r以只读方式打开文件。文件指针将会放在文件的开头。这是默认模式。
    file = open('test.txt','r',encoding='utf-8')
    print(file.read())
    file.close()

    # rb以二进制打开一个文件用于只读。文件的指针将会用在文件的开头
    # 一般用于 非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的bytes字符串类型
    file = open('test.txt','rb')
    print(file.read())
    file.close()

    # r+ 打开一个文件用于读写。文件指针将会放在文件的开头
    file = open('test.txt','r+')
    file.write('johnson')
    file.close()
     

     追加

    file = open('test.txt',mode='a',encoding='utf-8')
    file.write('相加就加')
    file.close()

    # a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的末尾
    # 也就是说,新的内容将会被写入到已有内容之后。如果文件不存在。创建新文件,进行写入
    file = open('test.txt','a')
    file.write('what is the fuck')
    file.close()

    # 打开一个文件用于读写。如果该文件已存在。文件指针会放在文件的结尾
    # 也就是说,新的内容将被写入已有内容之后。如果该文件不存在,创建新文件进行写入

    file = open('test.txt','a+')
    file.read()
    file.close()
     

    read()方法

    # 调用read()会一次性读取文件的所有内容,如果文件有10G,内存就爆了,会导致程序卡死
    # 所以保险起见,可以反复使用read(size)方法,每次最多读取size个字符的内容。
    
    file = open('test.txt','r+',encoding='utf-8')
    print(file.read(10))
    file.close()
    readlines() 
    # readlines() 一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来
    file = open('test.txt','r',encoding='utf-8')
    print(file.readlines())
    file.close()
    readline()

    # readline 每次读取一行,并且自带换行功能 每一行末尾会读到
    
    # 可以指定读取的字符个数,下一次读取会从此位置开始
    file = open('test.txt','r',encoding='utf-8')
    ret = file.readline(5)
    print(ret)
    print(file.readline())
    print(file.readline())
    print(file.readline())
    print(file.readline())
    # 循环读取file句柄是一个可迭代的对象,因此,可以循环读取文件中的内容,每次读一行。
    file = open('test.txt','r',encoding='utf-8')
    for i in file:
        print(i,end=' ')
    file.close()

    write()和writelines()

    # 写入write 和writelines
    
    file = open('test.txt','w',encoding='utf-8')
    list =['hello','world','jjj','john']
    # for i in list:
    #     file.write(i+'
    ')
    file.writelines(list)
    file.close()

     with用法

    正常操作文件读写的时候,执行完毕后都需要close,但是重复的close增加了重复的工作,而且有时候可能会忘记增加,所以对应来了个with

    file = open('test.txt','r',encoding='utf-8')
    print(file.read())
    file.close()
    
    # 使用with 方法操作文件,你可以不用关闭文件,会自动关闭文件
    
    with open('test.txt','r',encoding='utf-8') as f:
        print(f.read())
    
    
    # with内部实现了 __enter__和 __exit__方法,会自动关闭文件
    
    class Foo:
        def __init__(self):
            print('---init---')
    
        def __enter__(self):
            print('---enter---')
    
        def __exit__(self,exc_type,exc_val,exc_tb):
            print("---exit---")
    
    foo = Foo()
    with foo:
        print('读取文件')
    print("最后一行代码")
  • 相关阅读:
    [导入]CodeSmith基础(六)
    [导入]CodeSmith基础(五)
    POJ 2229 Sumsets(经典2次幂和问题)
    UVa 10820 Send a Table(欧拉函数)
    UVa 571 Jugs(经典倒水问题)
    UVa 10717 Mint(LCM)
    UVa 10791 Minimum Sum LCM(素因子分解)
    汇编的艺术(01)sizeof operator
    UVa 11121 Base 2(负数进制)
    UVa 106 Fermat vs. Pythagoras(毕达哥拉斯定理)
  • 原文地址:https://www.cnblogs.com/johnsonbug/p/12709979.html
Copyright © 2020-2023  润新知