• python ——文件的操作大全,如with..as


    工作中遇到了需要对json文件进行增删内容操作的需要,于是系统性的整理了一下关于文件的基本操作这里的知识点:

    结构:新建文件→打开文件→读取文件→关闭文件

    一、基本文件操作

    1、新建文件(打开文件),需要指定打开文件的方式(“r”, "r+", "w....)

    语法:file = open(filename [,mode[,buffering]])

    用open关键字,可以新建一个文件

    常用的mode有两个,特记忆如下:

    ①r+:打开一个文件用于读写。文件指针将会放在文件的开头。

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

    PS:r*的文件,原文件必须存在,而w*的文件,原文件可存在,也可不存在,如果原文件存在,则将其覆盖,如果不存在就创建。

    2、打开文件时指定编码方式(默认为GBK,报错时需要转换会“utf-8”)

    用open()打开文件时,默认为GBK编码,当被打开的文件不是GBK编码时,将抛出异常,所以需要我们在打开文件的时候指定编码方式:

    例如,打开采用UTF-8编码保存的notic.txt文件,使用如下代码转化:

    file = open('notic.txt',  'r', encoding='utf-8')

    3、关闭文件:

    打开文件后,一般要关闭文件,忘记关闭的话会有意想不到的问题

    file.close()     #file为关闭的对象

    4、打开文件使用with语句

    好处:可以在with语句执行完毕后,自动关闭文件。

    句柄:

    with expression as target:

      with-body

    其中: expression指定一个表达式,可以是一个函数,可以为open()函数,即打开文件

        target:将读取出来的值赋值给target,是一个变量。

    为什么with语句会自动执行打开和关闭动作呢?因为with会触发__enter__和__exit__,__enter__ 和 __exit__ 必须并用:

     1 class Sample:
     2     def __enter__(self):
     3         print("in __enter__")
     4         return "Foo"
     5 
     6     def __exit__(self, exc_type, exc_val, exc_tb):
     7         print("in __exit__")
     8 
     9 
    10 def get_sample():
    11     return Sample()
    12 
    13 
    14 with get_sample() as sample:
    15     print("Sample:", sample)
    16 
    17 #
    18 in __enter__
    19 Sample: Foo
    20 in __exit__

     

    5、读取文件内容:用读取方法的前提是:一定要用‘r’(只读)或者'r+'(读写)打开的文件

    5.1:读取全部:file.read(size),如果有指定位置的读取,建议用seek

    其中:size可选,指定读取的字符个数,如果为空则全部读取。

    5.2: 仅读取一行:file.readline()

    需要用循环控制,进行逐行的读取

    5.3:读取全部行:file.readlines(),它与read的区别是readlines会返回一个字符串列表,每一行为一个元素。

    可以用for语句逐行打印,因为文件过大读取全部会很慢。

    6、写入文件

    file.write():写入文件具体内容。

    对json文件的解析及操作,见链接https://www.cnblogs.com/fish-101/p/11636444.html

  • 相关阅读:
    mysql 严格模式 Strict Mode
    PHP中NULL和‘'的区别
    nginx 出现413 Request Entity Too Large问题的解决方法
    mysql 转换NULL数据方法
    mysql大小写敏感配置
    mysql导入大批量数据出现MySQL server has gone away的解决方法
    mysql函数concat与group_concat使用说明
    Linux下aMule安装教程
    四、YOLO-V1原理与实现(you only look once)
    tf.cast(ndarray,dtype)
  • 原文地址:https://www.cnblogs.com/fish-101/p/11636199.html
Copyright © 2020-2023  润新知