• python-13:文件操作 open


    一、文件操作的流程:

            filehand=open(filename,mode,encoding):encoding:表示的意思:告诉open函数,以encoding=‘xxx’方式解码,打开文件,encoding=‘xxx’就是文件存在硬盘上时所使用的编码方式,若无encoding=‘xxx’,windows默认用'gbk'解码,linux,用utf-8

    #1. 打开文件,得到文件句柄并赋值给一个变量: f=open(filename,mode,encoding)
    #2. 通过句柄对文件进行操作:f.read()
    #3. 关闭文件:f.close()

    具体步骤如下:

    f=open('test.txt',encoding='utf-8')   #打开文件
    data=f.read()            #文件操作
    print(data)
    f.close()          #关闭文件

    二、open()函数的具体用法:

    open函数最常用的使用方法如下:文件句柄 = open('文件路径', '模式',编码方式)。

    1、关于文件路径

       #文件路径:主要有两种,一种是使用相对路径,想上面的例子就是使用相对路径。

        #另外一种就是绝对路径,像' C:/Users/shu/Desktop/python/test.txt'

    2、关于打开模式:

    # r    以只读方式打开文件。这是默认模式。文件必须存在,不存在抛出错误
    #rb    以二进制格式打开一个文件用于只读。b,bytes 方式不用指定编码,指定编码反而报错
    #r+    打开一个文件用于读写。文件指针将会放在文件的开头。读完就追加。
    #w    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    #w+    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    #a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    #a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

    注:后面有带b的方式,不用指定编码方式。有带+号的,则可读可写,不过它们之间还是有区别的

    三、关于编码方式:

        #比如我们用pycharm写一个text文件,我们写的时候是用utf-8写入的,但是当我们在pycharm里面用open只读方式打开这个文件,如果没指定编码方式则会报错(pycharm默认的编码是utf-8),为什么呢?
    因为open函数打开文件,是不会去看你编辑器的编码方式的,它是根据系统的编码方式来的。由于我系统是gbk所以它干的事情就是用gbk格式去读我用utf-8保存的文件。肯定会报错

     四、关闭文件:

     不要小看这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()
            with open('test.txt','a+') as f:
                f.write('作者:仓央嘉措')
                print(f.read())


    五 、补充

    with open('test.txt','rb') as f:
        data=f.read()
        print(data)
        print(data.decode('utf-8')) #需要decode将bytes原生形式转变为unicode形式


    # 结果:
    #b'hello 2018xe5xb9xb410xe6x9cx8811xe6x97xa5 xe4xb8xadxe5x9bxbd*xe5x8cx97xe4xbaxac '
    # hello
    # 2018年10月11日
    # 中国*北京

    with open('test1.txt','wb') as f:
    f.write(bytes('hello,中国 ',encoding='utf8')) #以二进制形式写入文件
    f.write('北京 '.encode('utf-8'))#以二进制形式写入文件

     同时打开2个文件,一读一写

      with open('t1','r') as f,open('t2','w') as s:

          s.write(f.read())

  • 相关阅读:
    delphi内存管理
    Dbgrid导出为word
    indy传输文件
    TMethod
    http状态码详解
    如何严格设置php中session过期时间
    http和https的优缺点,区别与工作原理
    session的生命周期
    Mysql分库分表方案,如何分,怎样分?
    【观点】程序员应知——循序渐进 狼人:
  • 原文地址:https://www.cnblogs.com/Zhouzg-2018/p/9774394.html
Copyright © 2020-2023  润新知