目录
9.exists() isfile() isdir() isabs()
13.getatime() getctime() getmtime() getsize()
一、文件介绍
1.文件分类
文件文件,二进制文件
2.使用文件的流程
(1)打开文件 open()
(2)读写文件 read() write()
(3)关闭文件 close()
二、读写文件的简单操作
1.读取文件 read()
file = open('file/a.txt', mode='r')
ret = file.read()
print(ret)
file.close()
2.写文件 write()
如果文件不存在,会自动创建文件,不会自动创建目录
file = open('d.txt', mode='w')
file.write('aaaaa')
file.close()
三、读操作
read() | 默认把内容全部读取出来 还可以将制定个数的内容读取出来 |
readline() | 读一行\n 还可以将一行里面制定个数的内容读取出来 |
readlines() | 读多行, 将内容全部读取出来,并保存在一个列表中 |
for line in file: | 循环读取,文件句柄(文件对象)可以迭代 |
1.read()
file = open('d.txt', mode='r')
ret = file.read() # 将文件的全部内容读取出来
print(ret) # aaaaa
file.close()
file = open('d.txt', mode='r')
ret = file.read(3) # 读出文件的三个字符
print(ret) # aaa
file.close()
2.readline()
file = open('d.txt', mode='r')
ret = file.readline()
print(ret)
file.close()
#aaaaa
#
file = open('d.txt', mode='r')
ret = file.readline(3) # 将一行里面的指定个数的内容读取出来
print(ret)
file.close()
# aaa
#
3.readlines()
# readlines():读多行,把读出来的内容都保存在一个列表中
file = open('d.txt', mode='r')
ret = file.readlines()
print(ret) # ['aaaaa\n', 'bgfgfgfbf']
file.close()
4.循环读取:文件句柄(文件对象)可以迭代
# 循环读取,文件句柄(文件对象)可以迭代
file = open('d.txt', mode='r')
for line in file:
print(line)
file.close()
# aaaaa
#
# bgfgfgfbf
#
四、写操作
如果文件不存在,会自动创建文件,不会创建目录
write() | |
writelines() | 可以传递一个可迭代内容 |
1.write()
file = open('c.txt', mode='w')
file.write('wwwww')
file.close()
2.writelines()
# 可迭代内容选的是列表
file = open('f.txt', mode='w')
lst = ['aaa', 'bbb', 'ccc']
file.writelines(lst)
file.close()
# f.txt:aaabbbccc
# 要想让aaa bbb ccc换行的话,在列表里面加'\n'换行符即可
file = open('f.txt', mode='w')
lst = ['aaa\n', 'bbb\n', 'ccc']
file.writelines(lst)
file.close()
# aaa
# bbb
# ccc
五、其他操作
1.tell()
获取光标的位置
file = open('b.txt', mode='r')
ret = file.read(2) # 读两个 aa
print(ret)
print(file.tell()) # 获取光标的位置 2
ret = file.read() # 读出剩余的全部内容
print(ret)
file.close()
# a
# bbbccc
2.seek()
移动光标的位置
第一个参数 offset | 表示移几个位置 |
第二个参数 whence | 表示相对位置 0----->从开头 1------>从当前位置 2------>从末尾 |
#1.
file = open('b.txt', mode='r')
ret = file.read(3) # 读三个 aaa
print(ret)
file.seek(0, 2) # 把光标移动到末尾
ret = file.read() # 把剩余部分全部读出来
print(ret)
file.close()
#aaa
#2.
file = open('b.txt', mode='rb')
ret = file.read(3) # 读三个 aaa
print(ret)
file.seek(1, 1) # 把光标移动到当前位置,跳一个,再开始读
ret = file.read() # 把剩余部分全部读出来
print(ret)
file.close()
# b'aaa'
# b'\nbbbccc'
#3.
file = open('b.txt', mode='rb')
ret = file.read(3) # 读三个 aaa
print(ret)
file.seek(-3, 2) # 把光标移动到末尾,往回退三个,再开始读
ret = file.read() # 把剩余部分全部读出来
print(ret)
file.close()
# b'aaa'
# b'ccc'
注意:当mode='r'时,seek()的第一个参数必须为0,非0会报错
3.查看文件的名字与模式
file = open('b.txt', mode='r')
print(file.name) # b.txt
print(file.mode) # rb
file.close()
4.with方式
这种方法会自动关闭文件,最后不用写file.close()
相当于:file=open('b.txt',mode='r)
with open('b.txt', mode='r') as f:
ret = f.read()
print(ret)
# aaa
# bbbccc
六、乱码问题
乱码问题是读写操作的编码不一致导致乱码
Python编码依赖于平台的编码 GBK
windows操作系统默认用GBK编码
with open('file/c.txt', mode='w',encoding='utf-8') as f:
f.write('你好,世界') # 指定用UTF-8编码
'''
乱码问题:
读写操作的编码不一致导致乱码
windows操作系统默认GBK
Python编码依赖于平台的编码 GBK
encoding= 可以指定编码方式 默认编码是GBK
'''
with open('file/c.txt', mode='r',encoding='utf-8') as f:
ret = f.read()
print(ret)
七、文件的其他操作
import os
重命名 | rename() | 第一个参数是原文件名 第二个参数是新文件名 |
删除文件 | remove() | 只能删除文件,不能删除文件夹 |
创建目录 | mkdir() | 只能创建一层目录 |
makedirs() | 创建多层目录 | |
删除目录 | rmdir() | 删除一层空目录 |
removedirs() | 删除多层目录 | |
获取当前所在目录 | getcwd() | |
获取目录列表 | listdir() | |
切换所在目录 | chdir() | |
判断 | exists() | 判断文件或文件夹是否存在 如果是根目录下的文件,都是存在的,True 如果是其他目录下的,就是不存在的,False |
isfile() | 判断是否为文件 如果根目录下为文件,True | |
isdir() | 判断是否为目录 | |
isabs() | 判断是否绝对路径 | |
获取绝对路径 | abspath() | |
获取路径中的最后一部分 | basename() | |
获取上一层路径 | dirname() | |
将多个目录组织成路径返回 | join() | 不会实际创建路径 |
获取文件信息 | getatime() | 返回path指向的文件或目录的最后访问时间 |
getctime() | 查看文件创建的时间 | |
getmtime() | 返回path指向的文件或目录的最后修改时间 | |
getsize() | 查看文件的大小 |
1.rename()
2.remove()
3.mkdir() makedirs()
4.rmdir() removedirs()
5.getcwd()
6.listdir()
7.chdir()
8.abspath()
9.exists() isfile() isdir() isabs()
import os
print(os.path.isabs(os.path.abspath('file'))) # True
print(os.path.isabs('file')) # False
10.basename()
11.dirname()
12.join()
import os
print(os.path.join('aaa', 'bbb', 'ccc')) # aaa\bbb\ccc
13.getatime() getctime() getmtime() getsize()
# 获取文件信息,gettime() getctime() getmtime() :返回的是时间戳
# getsize(): 返回的是int
import os
print(os.path.getatime('file')) # 1547115818.0970514
print(os.path.getctime('file')) # 1547083239.9470632
print(os.path.getmtime('file')) # 1547115818.0970514
print(os.path.getsize('file')) # 0
print(os.path.getsize('file/a.txt')) # 124