type
status
date
slug
summary
tags
category
icon
password
前言
绝对路径和相对路径说明:
- 绝对路径:从根目录开始的完整路径
- 相对路径:从当前工作路径开始的路径
路径中(.)和(..)含义:
- ./ 表示当前目录
- ../ 表示当前目录的上一目录
- ../../ 表示当前目录的上上目录
文件路径中斜杠和反斜杠问题:
windows系统使用反斜杠(\),在Linux和OS X中用斜杠(/)
总结:
1 、目录操作
Python中, 对路径, 文件以及文件相关操作需要使用os模块.
在本人桌面路径:C:\Users\wk\Desktop有目录test如下所示:
1.1 目录查询、获取
1.2 递归遍历目录os.path.abspath("test\test-2\1.txt")
1.3 创建目录
1.4 删除/重命名目录
2、文件操作(要包含对文件的查找和筛选)
8.1 打开文件
常用参数:
- file:读取文件路径
- encoding:编码方式(二进制文件不能结合编码参数使用)
- gbk编码: (国内) 中文占2个字节, 数字, 字母, 符号等都占1个字节.
- utf-8编码: (国际通用)中文占3个字节, 数字, 字母, 符号等都占1个字节.
- 遇到乱码的情况只有一种原因: 编解码不一致.
- mode模式:
- r:只读(默认),r+:可读,可开头写入
- w:清空写入,w+ :清空写入并可读
- a:追加,a+:追加并可读
- b:二进制模式打开,默认为t,文本模式(不单独使用,需要组合使用rt,at,wt)
- 文本模式t:字符流,将文件的字节按照某种字符编码理解,按照字符操作。open默认mode就是rt
- 二进制模式b:字节流,将文件按照字节理解,与字符编码无关。二进制模式操作时,字节操作使用bytes类型
mode模式 | r | r+ | w | w+ | a | a+ |
读 | ✓ | ✓ | ㅤ | ✓ | ㅤ | ✓ |
写 | ㅤ | ✓ | ✓ | ✓ | ✓ | ✓ |
(不存在)创建 | ㅤ | ㅤ | ✓ | ✓ | ✓ | ✓ |
(清空原数据)覆盖 | ㅤ | ㅤ | ✓ | ✓ | ㅤ | ㅤ |
指针在开始 | ✓ | ✓ | ✓ | ✓ | ㅤ | ㅤ |
指针在结尾 | ㅤ | ㅤ | ㅤ | ㅤ | ✓ | ✓ |
用open函数打开文件之后,需要用close()函数关闭文件, 来释放内存资源. 为了防止忘记关闭文件而导致的内存资源浪费的情况, 可以用上下文管理器的方法, 当语句体用完之后会自动回收资源, 无需手动关闭文件.
8.2 with open()as f
8.3 读取数据
8.2 将数据写入文件
8.2.1 覆盖写入(w)
示例中,调用open()时提供了两个实参,第一个实参是要打开的文件名称;第二个实参(‘w’),是以写入模式打开这个文件。如果没有第二个实参,Python默认是只读模式打开文件。如果你要写入文件不存在,则会创建它。如果写入文件有原先有内容,则会被覆盖。
模式:
- r:可指定读取模式
- w:写入模式
- a:附加模式
- r+:读取和写入模式
8.2.2 附加写入(a)
附加模式打开文件,可实现文件原内容不覆盖。如果指定的文件不存在,则会新建。
8.3.2 文件操作
文件相关函数 | 说明 |
access(path,accessmode) | 获取文件是否有指定的访问权限,有R_OK(读取),W_OK(写入),X_OK(执行),F_OK(存在) |
chmode(path,mode) | 修改访问权限 |
rename(src,dst) | 重命名文件,src→dst |
remove(path) | 删除指定路径的文件 |
stat(path) | 返回指定路径的文件信息 |
startfile(path[,operatin]) | 使用关联的程序打开指定路径的文件 |
8.4 异常
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。如果你编写了处理异常的代码,程序将继续运行;反之,程序将终止,并显示一个traceback,期中包含有关异常的报告。
异常是使用try-except代码块来处理的。使用这个代码块让Python执行指定的操作,同时告诉Python发生异常之后怎么办。
8.3.1 处理异常
在程序出错时,会返回一段traceback,其中会报出你的代码中存在的错误类型,比如:
TypeError,IndentationError,ZeroDivisionError,FileNotFoundError
等等eg:print(5/0)
显示错误,得到的traceback:
Traceback (most recent call last):
File "C:\Users\wk\Desktop\Python\python_use.py", line 99, in <module>
print(5/0)
ZeroDivisionError: division by zero
处理:
让Python尝试运行try代码块中的代码,如异常则执行except代码块中的异常处理办法,如执行成功则将要执行的代码存放在try代码块中。
实战:编写一个除法计算器,并添加异常处理方式
8.5 存储数据
这里提供一种简单的方式用来存储数据,那就是使用模块json用来存储数据。
8.4.1 使用json.dump()和json.load()
- 用于存储数据的程序:用
json.dump(infor,filename)
- 用于将数据读取到内存中程序:用
json.load(filename)
存储数据:
将numbers列表数据存储在json格式的文件中
读取入内存: