文件和文件系统
1.文件打开模式
打开模式 | 执行操作 |
---|---|
‘r’ | 以只读方式打开文件(默认) |
‘w’ | 以写入的方式打开文件,会覆盖已存在的文件 |
‘x’ | 如果文件已经存在,使用此模式打开将引发异常 |
‘a’ | 以写入模式打开,如果文件存在,则在末尾追加写入 |
‘b’ | 以二进制模式打开文件 |
‘t’ | 以文本模式打开(默认) |
‘+’ | 可读写模式(可添加到其他模式中使用) |
‘U’ | 通用换行符支持 |
2.文件对象方法
文件对象方法 | 执行操作 |
---|---|
f.close() | 关闭文件 |
f.read([size=-1]) | 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
f.readline([size=-1]) | 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符 |
f.write(str) | 将字符串str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象 |
f.seek(offset, from) | 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节 |
f.tell() | 返回当前在文件中的位置 |
f.truncate([size=file.tell()]) | 截取文件到size个字节,默认是截取到文件指针当前位置 |
>>> f=open('E:\Python打卡学习\8\\11.txt')
>>> f
<_io.TextIOWrapper name='E:\\Python打卡学习\\8\\11.txt' mode='r' encoding='cp936'>
>>> f.read()
'万事大吉sad发动机司法局所肩负的送发的搜集佛教打扫你们都爱分\n'
>>> f.read()
''
>>> f.close()
>>> f=open('E:\Python打卡学习\8\\11.txt')
>>> f
<_io.TextIOWrapper name='E:\\Python打卡学习\\8\\11.txt' mode='r' encoding='cp936'>
>>> f.read(5)
'万事大吉s'
>>> f.tell()
9
>>> f.seek(11,0)
11
>>> f.readline()
'发动机司法局所肩负的送发的搜集佛教打扫你们都爱分\n'
>>> f.seek(10,0)
10
>>> f.readline()
'd发动机司法局所肩负的送发的搜集佛教打扫你们都爱分\n'
>>> f.seek(12,0)
12
>>> f.readline()
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
f.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 2: illegal multibyte sequence
3.用list可以直接将文件转换成列表
>>> f=open('E:\Python打卡学习\8\\11.txt')
>>>
>>> f
<_io.TextIOWrapper name='E:\\Python打卡学习\\8\\11.txt' mode='r' encoding='cp936'>
>>> list(f)
['万事大吉sad发动机司法局所肩负的送发的搜集佛教打扫你们都爱分\n']
4.write()
>>> f=open('E:\Python打卡学习\8\\11.txt','w')
>>> f.write('编程改变世界')
6
>>> f.close()
5.文件系统:不需要关心什么操作系统下使用什么模块,OS模块会选择正确的模块并调用。
6.os模块中关于文件/目录常用的函数使用方法
函数名 | 使用方法 |
---|---|
getcwd() | 返回当前工作目录 |
chdir(path) | 改变工作目录 |
listdir(path=’.’) | 列举指定目录中的文件名(’.‘表示当前目录,’…'表示上一级目录) |
mkdir(path) | 创建单层目录,如该目录已存在抛出异常 |
makedirs(path) | 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b’和’E:\a\c’并不会冲突 |
remove(path) | 删除文件 |
7.os.path模块中关于路径常用的函数使用方法
函数名 | 使用方法 |
---|---|
basename(path) | 去掉目录路径,单独返回文件名 |
dirname(path) | 去掉文件名,单独返回目录路径 |
join(path1[, path2[, …]]) | 将path1, path2各部分组合成一个路径名 |
split(path) | 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在 |
splitext(path) | 分离文件名与扩展名,返回(f_name, f_extension)元组 |
8.存放:pickling 读取:unpickling
>>> import pickle
>>> list1=[123,3.14,'小甲鱼',[123]]
>>> pickle_file=open('list1.pkl','wb')
>>> pickle.dump (list1,pickle_file)
>>> pickle_file.close()
>>> pickle_file=open('list1.pkl','rb')
>>> list2=pickle.load(pickle_file)
>>> print(list2)
[123, 3.14, '小甲鱼', [123]]