码迷,mamicode.com
首页 > 其他好文 > 详细

文件操作其一

时间:2020-03-13 18:33:09      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:文本编辑   with   产生   使用   调整   wrap   系统调用   dos   变量   

一、文件的定义:文件是操作系统提供给用户或者应用程序的一种虚拟的概念,也可以说是一种接口或功能。

二、为什么要用文件:用户/应用程序可以通过操作文件进而控制硬盘将数据永久保存其中。文件是操作系统提供的一种功能,用户/操作系统操作文件时,其实就是在向操作系统申请系统调用,再用操作系统转转为具体的硬盘操作指令。

三、文件使用open的模式

  1、控制文件读写内容的两种模式 t 和 b :

    ① t :文本文件的模式,也是默认模式,读写都以str(unicode格式)为单位。

    ②Bytes:二进制模式。

  2、控制文件读写操作的模式:

    ① r :只读模式。

    ② w:只写模式。

    ③ a :只追加写模式。

    ④ r+ :读模式下兼容写。

    ⑤ w+ :写模式下兼容读。

    ⑥ a+ :追加写模式下兼容读。

  3、强调:t 和 b 不能单独使用,必须和 r/w/a/r+/w+/a+ 连用。

四、文件基本操作

  1、打开文件:open(文件路径)。

    ①在windows系统中的特别说明:此系统中的文件路径会以文件夹名+正斜杠的形式,这在python中有些会被识别位特殊功能,为避免这种情况,有两种解决方案。

      Ⅰ:在文件路径的左侧引号外加一个 r ,即表示将引号内的全部内容标记为只读字符,不识别含义。此方法较为推荐。

      Ⅱ:可以将文件路径的正斜杠改写为反斜杠,python解释器识别时会自动调整。

open(C:\ddd.txt\nb\c\d.txt)  # 这其中的\n会被python语法识别为转译符
open(rC:\ddd.txt\nb\c\d.txt)  # 解决方案一,推荐使用
open(C:/ddd.txt/nb/c/d.txt)  # 解决方案二

    ②打开文件的操作会产生某种数据类型的值,占用应用程序的内存空间。

a = open(rE:\python之路\01 课程\week02-day05\作业专用\0001.txt)
print(a, type(a))  # 此处类型结果为 _io.TextIOWrapper

  2、操作文件:就是读或写的操作,应用程序对文件的读写请求都是在向操作系统发送调用申请,然后由操作系统通过cpu控制硬盘把输入读入内存,或存入硬盘。以读为例:

a = open(rE:\python之路\01 课程\week02-day05\作业专用\0001.txt)  # 该文件事先编辑了内容为:is 0001
b = a.read()
print(b)  # 结果为 is 0001

  3、关闭文件:作用是为了回收操作系统的内存资源。

a = open(rE:\python之路\01 课程\week02-day05\作业专用\0001.txt)
b = a.read()
print(b)
a.close()  # 关闭文件,回收操作系统资源
del a  # 变量 a 依然存在,但是不能再读了,理应删除以回收应用程序资源,但是因为其占用空间微乎其微,此步可忽略不做

  4、文件对象操作,又称文件句柄:with.......as,使用此功能运行完会自动关闭文件。

with open(rE:\python之路\01 课程\week02-day05\作业专用\0001.txt, mode=rt)as a1,         open(rE:\python之路\01 课程\week02-day05\作业专用\0002.txt, mode=rt)as a2:  # with后面可以接多个open,以 , 隔开,还可以 \ 换行
    b1 = a1.read()
    b2 = a2.read()
    print(b1)  # 结果为 is 0001
    print(b2)  # 结果为 is 0002
print(a1.read())  # with as 结束后,文件自动关闭,所以此步会报错

  5、指定字符编码:没有指定encoding参数操作系统会使用自己的模式编码,例如linux使用utf-8,windos使用GBK。

    ①以windows为例,若文件中有中文,因为文本编辑器编辑此文本时是以utf-8存入硬盘,我们需要操作这个文件的时候,若用操作系统默认的GBK码从硬盘解码出来的话,会因为存取码不对应而产生乱码,要解决此问题需要使用encoding功能指定解码表。

with open(rE:\python之路\01 课程\week02-day05\作业专用\0003 中文文件.txt, mode=rt, encoding=utf-8) as a3:
    b3 = a3.read()
    print(b3)  # 结果为 这是 0003 中文文件

五、文件操作模式详解

  1、r 模式(默认模式):只读模式,当文件不存在时则报错,当文件存在时指针会跳到开始位置。

 

 

    

 

文件操作其一

标签:文本编辑   with   产生   使用   调整   wrap   系统调用   dos   变量   

原文地址:https://www.cnblogs.com/caoyu080202201/p/12488087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!