01.文件的概念
- 1.1文件的概念和作用
- 计算机的文件,就是存储在某种长期存储设备上的一段数据 长期存储设备包括:硬盘、U盘、移动硬盘、光盘...
- 文件的作用
- 将数据长期保存下来,在需要的时候使用
- 1.2文件的存储方式
-
在计算机中,文件是以二进制的方式保存在磁盘上的
-
文本文件
- 可以使用文本编辑软件查看
- 本质上还是二进制文件
- 例如:python的源程序
-
二进制文件
- 保存的内容不是给人直接阅读的,而是提供给其他软件使用的。 例如:图片文件、普通文件、视频文件等等 二进制文件不能使用文被编辑软件查看
-
02.文件的基本操作
-
2.1操作文件的套路
- 在计算机中要操作文件的套路非常固定,一共包含三个步骤
- 1.打开文件
- 2.读、写文件
- 读:将文件内容读入内存
- 写:将内存内容写入文件
- 3.关闭文件
- 在计算机中要操作文件的套路非常固定,一共包含三个步骤
-
2.2操作文件的函数/方法
- 在python中要操作文件需要记住1个函数和3个方法
序号 函数/方法 说明 01 open 打开文件,并且返回文件操作对象 02 read 将文件内容读入内存 03 write 将指定内容写入文件 04 close 关闭文件 open函数负责打开文件,并且返回文件操作对象 read/write/close三个方法都需要通过文件对象来调用
-
2.3打开文件的方式
-
open函数默认以只读方式打开文件,并且返回文件操作对象
-
语法:f = open("文件名","访问方式")
-
访问方式说明
r 只读,默认打开方式,当文件不存在时会报错 w 只写,当文件不存在时会自动创建文件,文件内容只能是字符串,只能写入字符串,会覆盖原有 a 追加文件,不可读 r+ 可读可写,当文件不存在时会报错 w+ 可读可写。当文件不存在时会新建 a+ 追加文件,可读可写 rb 以二进制读模式打开,只可读 rb+ 以二进制写读写模式打开,可读可写,当文件不存在时报错 wb 以位进制写模式打开,只可写 wb+ 以二进制读写模式打开,可读可写。当文件不存在时新建 ab 以二进制追加模式打开,追加文件,不可读 ab+ 以二进制读写模式打开,追加文件。可读可写 ps:频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以只读、只写的方式来操作文件
-
-
2.4按行读取文件内容
-
read方法默认会把文件的所有内容一次性读取到内存。 如果文件太大,对内存的占用会非常严重
-
readline方法(读取大文件的正确姿势)
- 可以一次读取一行内容
- 方法执行后,会把文件指针移动到下一行,准备再次读取
-
03.文件/文件夹的常用操作(都支持相对路径和绝对路径)
-
在终端/文件浏览器中,可以执行常规文件/目录管理操作,例如: 创建、重命名、删除、改变路径、查看目录内容、...
-
在python中,如果希望通过程序实现上述功能,需要导入os模块
-
文件操作
rename 重命名文件 os.rename(源文件名,目标文件名) remove 删除文件 os.rename(文件名)
-
目录操作
listdir 目录列表 os.listdir(目录名) mkdir 创建目录 os.mkdir(目录名) rmdir 创建目录 os.rmdir(目录名) getcwd 获取当前目录 os.getcwd() chdir 修改工作目录 os.chdir(目标目录) path.isdir 判断是否是文件 os.path.isdir(文件路径)
04.文本文件的编码方式
-
4.1文本文件的编码方式(科普)
-
文本文件存储的内容是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等
- Python 2.x默认使用 ASCII 编码
- Python 3.x默认使用 UTF-8 编码
-
ASCII 编码
- 计算机中只有256个 ASCII 字符
- 一个在内存中占用一个字节的空间 8个0/1的排列组合方式一共有256中,也就是2的8次方(2 ** 8)
-
UTF-8 编码
- 计算机中使用1-6个字节来表示一个UTF-8字符,涵盖了地球上几乎所有地区的文字
- 大多数汉字会使用3个字节表示
- UTF-8是UNICODE编码的一种编码格式
-
-
4.2Python 2.x中如何使用中文
-
在Python 2.x文件的第一行增加以下代码,解释器会以utf-8编码来处理python文件
# -*- coding:utf-8 -*-(官方推荐)
-
也可以使用
# coding=utf8
-
Unicode字符串
- 在Python 2.x中,即使指定了文件使用UTF-8的编码格式,但是在遍历字符串时,仍然会以 字节为单位遍历字符串
- 要能够正确的遍历字符串,在定义字符串时,需要在字符串的引号前面的u, 告诉解释器这是一个Unicode字符串(使用utf8编码格式的字符串) s = u"你好"
-
练习代码仓库: https://gitee.com/yangpengfi/pythonStudy/tree/master/day3