目录
1、创建和打开文件
# 使用open函数打开或创建一个文件
file = open(name, mode)
# name:文件名(可以包含文件所在的具体路径), mode:文件的打开模式
# r read 只读模式
# w write 只写模式
# a append 只写模式,追加模式,在文件末尾追加
#####
# 读操作的相关方法
# 从文件 开头 读取指定长度 read()
file.read([size])
# size:指定读取的字符个数,省略则默认读取全部内容
# 将文件指针移动到新的位置 seek()
file.seek(size, whence)
# size : 指定移动的字符个数 whence: 指定从什么位置开始计算,0--文件头,1--当前位置,2--文件尾
# 如果从文件尾开始的话,要注意在size前加负号
# 写入操作
file = open('python.txt', 'w',encoding='utf-8')
# 加入\n一次写入多行
file.write('写入的内容\n'
'hello world\n'
'hello bigdata')
file.close()
值 | 说明 | 注意 |
---|---|---|
r | 以只读模式打开文件。文件的指针会放在文件的开头 | 文件必须存在 |
rb | 以二进制格式打开文件,并且采用只读模式,指针放在开头,一般用于非文本的文件 | |
r+ | 打开文件后,可以读取文件内容,也可以写入新的内容从开头覆盖原有内容 | |
rb+ | 二进制格式打开文件,读写 | |
w | 以只写模式打开文件 | 文件存在,则将其覆盖;否则创建新文件 |
wb | 以二进制打开文件,只写模式 | |
w+ | 打开文件后,先清空内容使其成为空文件,在进行读写 | |
wb+ | 二进制打开,读写模式 | |
a | 追加模式打开文件,若是已存在的文件,指针会在文件末尾;否则,创建新文件用于写入 | |
ab | 二进制打开,追加模式 | |
a+ | 以读写模式打开,若是已存在的文件,指针会在文件末尾;否则,创建新文件用于写入 | |
ab+ | 二进制打开,追加模式 |
2、关闭文件和 with方式打开文件
# 打开文件后需关闭文件
file.close()
# with语句打开文件
with 表达式 as 变量 :
语句块
##
with open('message.txt','w') as f :
f.write('123456')
3、绝对路径和相对路径
①绝对路径:
一般从盘符开始,然后一级一级向下寻找(不能越级),直到找到我们想要的文件。
绝对路径一般路径固定了,文件就不能移动,在迁移过程中也比较麻烦。
②相对路径:
不需要从盘符开始,首先需要找到一个参考点(Python代码本身)
③下级关系文件的访问
同级关系:我们要访问的文件与Python代码处于同一目录,访问时可以使用 ./文件名称 或直接写 文件名称
上级关系:通过 ../ 来访问,如果是多级,则通过../../../ .....一层层访问
下级关系:与Python代码同级的某个文件夹的下面,则可通过 文件夹名称/文件名称 来访问
4、文件夹与os模块
# os模块与文件夹(目录)操作
import os
os.函数名()
# 还有其子模块 os.path
# 与文件相关的操作
rename(旧文件名,新文件名) 对文件进行重命名
remove(文件名) 删除文件
os.rename('python.txt','python1.txt')
os.remove('python[备份].txt')
# 与文件夹相关的操作
# 创建一个 message文件夹 os.mkdir()
# 在创建文件夹之前要先判断这个文件夹是否存在,如果存在了还进行创建的话会报错
if not os.path.exists('message'):
# 创建文件夹
os.mkdir('message')
if not os.path.exists('message/avatar'):
os.mkdir('message/avatar')
# 获取当前工作路径 os.getcwd()
print(os.getcwd()) #/Users/maclin/PycharmProjects/test/文件
# # 切换到指定路径 os.chdir()
os.chdir('message/avatar') #/Users/。。/PycharmProjects/test/文件/message/avatar
print(os.getcwd())
# # 往上跳三级,切换到上一级test目录
os.chdir('../../../') #/Users/。。/PycharmProjects/test
print(os.getcwd())
# 打印当前目录下的所有文件信息(以列表形式) os.listdir()
print(os.listdir())
# 删除文件夹,只能删除是空的
os.rmdir('message/avatar')
### 如果要删除非空文件夹,可以使用 递归删除 , shutil模块
# 但要慎重,确认路径是对的
import shutil
shutil.rmtree('要删除文件夹的路径')
os相关函数 | 说明 | os.path相关函数 | 说明 |
getcwd() | 返回当前的工作目录 | abspath(path) | 用于获取文件或目录的绝对路径 |
listdir(path) | 返回指定路径下的文件和目录信息,返回列表 | exists(path) | 用于判断目录或者文件是否存在,返回True或False |
mkdir(path) | 创建目录 | join(path,name) | 将目录与目录或者文件名拼接起来 |
makedirs(path1/path2...,mode) | 创建多级目录 | splitext() | 分离文件名和扩展名 |
rmdir(path) | 删除指定的‘空’的文件夹 | basename(path) | 从一个目录中提取文件名 |
removedirs(path1/path2...,mode) | 删除多级目录 | dirname(path) | 从一个路径中提取文件路径,不包含文件名 |
chdir(path) | 把path设置为当前工作目录 | isdir(path) | 用于判断是否为路径 |
walk(top,topdown,onerror) | 遍历目录树,该方法返回一个元祖,包括所有路径名,所有目录列表和文件列表3个元素 |