文件操作
基础文件操作
创建和打开文件
file = open(filename,mode,buffering,encoding)
...
file 文件对象
open 打开文件函数
filename 文件名 可以是完整的文件路径,否则工作路径就是当前文件夹下
mode 选参数 制定文件打开方式 默认只读(r)
buffering 可选参数 制定缓存模式 :0 不缓存,1 缓存, >1 缓存区大小。默认为零
encoding 可选参数例 encoding = ‘utf-8’,选择文件编码 默认选择GBK编码格式
...
mode参数的参数值和说明
值 | 说明 | 注意 |
---|---|---|
r | 只读 | 文件必须存在 |
rb | 只读(二进制文件一般用于读取图片声音等) | 文件必须存在 |
r+ | 读写(新写内容从文件头开始覆盖) | 文件必须存在 |
rb+ | 读写(二进制)(新写内容从文件头开始覆盖) | 文件必须存在 |
w | 只写 | 文件存在则将其覆盖 |
wb | 只写(二进制) | 文件存在则将其覆盖 |
w+ | 清空原本内容,重新写入 | 文件存在则将其覆盖 |
wb+ | 清空原本内容,重新写入 (二进制) | 文件存在则将其覆盖 |
a | 追加(文件指针在尾部) | |
ab | 追加(二进制) | |
a+ | 读写(文件指针在尾部) | |
ab+ | 读写(二进制)(文件指针在尾部) |
关闭文件
file.close() #关闭文件对象
with语句
with open("hello.txt",'r') as file:
string = file.read();
...
使用with语句保证无论是否出现异常,都会在执行完with语句后关闭文件
with 表达式 as 表达式的返回值:
相关操作
...
写入文件内容
file.wirte(string) #调用文件类的wirte函数参数是要写入的字符串
读取文件
file.seek(offset = 10,whence = 0)
...
seek()移动文件指针,
offset移动字符数。另注意中文字节占两个字符数。
whence默认参数:0文件头,1当前文件指针,2文件尾。默认文件头
...
file.read(10) #read() 从当前文件指针处向后读取字符数,中文算一个字符。默认全读
file.readline() #readline() 读取一行,
file.readlines() #读取全部行,按行存入字符串列表中
os模块提供的文件操作相关函数说明
函数 | 说明 |
---|---|
access(path,accessmode) | 获取对文件是否有访问权限accessmode的值R_OK(读权限),W_OK(写),X_OK(执行),F_OK(存在),返回值 0,1 |
chmod(path,mode) | 修改指定文件的访问权限 |
remove(path) | 删除指定文件 |
rename(src,dst) | 将文件或者目录src修改成dst |
stat(path) | 返回path指定文件信息 |
startfile(path,[operation]) | 使用关联的应用程序打开path指定文件 |
目录操作
os模块提供的目录相关的函数及说明
函数 | 说明 |
---|---|
getcwd() | 返回当前工作目录 |
listdir(path) | 换回制定路径下的文件和目录的信息 |
mkdir(path,[mode]) | 创建目录 |
makedirs(path1/path2…,[mode]) | 创建多级目录 |
rmdir(path) | 删除文件夹 |
removedirs(path1/path2…) | 删除多级文件夹 |
chdir(path) | 把path设置为当前工作路径 |
walk(path) | 遍历目录树,返回 [绝对路径,文件夹列表,文件列表]的列表 |
os.path模块提供的目录相关的函数及说明
函数 | 说明 |
---|---|
abspath(path) | 获取文件或目录的绝对路径 |
exists(path) | 判断路径挥着文件是否存在 |
join(path,name) | 将目录和目录或者文件名拼接起来 |
splitext() | 分离文件名和扩展名 |
basename(path) | 从路径中提取文件名 |
dirname(path) | 从路径中提取文件路径,不包括文件名 |
isdir(path) | 判断是否是路径 |