zoukankan      html  css  js  c++  java
  • Python open()函数用法详解

    一、文件操作的流程:

    #1. 打开文件,得到文件句柄并赋值给一个变量
    #2. 通过句柄对文件进行操作
    #3. 关闭文件

    具体步骤如下:

    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    以二进制格式打开一个文件用于只读。
    #r+    打开一个文件用于读写。文件指针将会放在文件的开头。读完就追加。
    #w    打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    #w+    打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
    #a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    #a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

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

    下面附上各种方法的代码,便于更深刻理解各种模式:

    #原来文件内容是:
    自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
    
    1.只读模式r:
    f=open('test.txt','r')
    data=f.read()
    print(data)           #自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.
    f.close() 
    
    2.只写模式,w  (存在会覆盖原来内容)
    f=open('test.txt','w')
    f.write('作者:仓央嘉措')
    f.close()              #写完后原来的内容全都不见了,只剩下'作者:仓央嘉措'.
    
    3、追加模式,a
    f=open('test.txt','a')
    f.write('作者:仓央嘉措')
    f.close()              #写完内容如下:自恐多情损梵行,入山又怕误倾城.世间安得双全法,不负如来不负卿.作者:仓央嘉措
    
    4、以r+模式打开
    f=open('test.txt','r+')
    f.write('作者:仓央嘉措')
    print(f.read())         # 输出为" ,入山又怕误倾城.世间安得双全法,不负如来不负卿."         
    f.close()            
    #写完内容为 “ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”
    #为什么输出和写完内容会这样呢? 解释这个只要知道紧跟光标的位置就可以明白了。
      首先,以r方式打开光标都会在最开始的位置,这时候执行f.write('作者:仓央嘉措') ,这时候就把原来的‘自恐多情损梵行’覆盖了。这时候光标移动到','之前,
    紧接着进行print(f.read())。就会把后面剩下的文本内容打印出来。所以输出就是:" ,入山又怕误倾城.世间安得双全法,不负如来不负卿." 整个程序完成后,
    整个文本内容就成了;“ 作者:仓央嘉措,入山又怕误倾城.世间安得双全法,不负如来不负卿.”(光标!!)
    View Code

     3、关于编码方式:

    #1.win系统默认是gbk编码的,所以桌面生成的TXT之类的都是gbk编码的。
    #2.出现乱码正常都是原文件的编码方式和打开指定的编码不一致所致

     三、关闭文件:

      不要小看这一步,因为我们读取文件是把文科读取到内存中的,如果我们没关闭它,它就会一直占用系统资源,而且还可能导致其他不安全隐患。还有一种方法可以让我们不用去特意关注关闭文件。那就是 with open()

    with open('test.txt','a+') as f:
        f.write('作者:仓央嘉措')
        print(f.read())
  • 相关阅读:
    jQuery 删除元素
    jQuery 添加元素
    jQuery 捕获
    jQuery 链
    jQuery Callback
    jQuery 停止动画
    jQuery 动画
    jQuery 滑动
    jQuery 淡入淡出
    SP2010开发和VS2010专家"食谱"--第七章节--使用客户端对象模型
  • 原文地址:https://www.cnblogs.com/linshuhui/p/8984326.html
Copyright © 2011-2022 走看看