一、 python文件访问
1, 在python中要访问文件,首先要打开文件,也就是open()这个函数
其中三个常用的参数为(1,要操作的文件路径2,访问的方式3,encodeing=字符编码)
有很多种访问方式
(1), r: 只读
(2), w: 只写,文件已存在则清空,不存在则创建
(3), a: 追加,写在文件末尾,如果文件存在,则在文件最后去追加,文件不存在则创建
(4), +-: 更新(可读可写)
(5), r+:以只读的模式打开(参见r)
(6), w+: 以只写的方式打开(参见w)
(7), a+ : 以追加的方法打开(参见a)
(8), rb:以二进制读模式打开
(9), wb:以二进制写模式打开
(10), ab:以二进制追加模式打开(参见a)
(11), rb+:以二进制读写模式打开(参见r+)
(12), wb+:以二进制读写模式打开(参见w+)
(13), ab+: 以二进制读写模式打开(参见a+)
2,文件的操作
1,open() 打开文件
2,read()读取文件
readline()读取整行,包括“\n”字符
readlines()读取文件,最后把文件每行内容作为一个字符串放在一个list中
注意:read系列函数的参数可以控制读取的字节数量
3,write()写文件,要传入一个字符串的参数
writelines()写文件,要传入一个列表
4,close() 关闭文件,关闭后不再进行读写操作
flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
next(文件) 返回文件的下一行数据,从第一行数据开始
5,seek( )用于移动指定位置
参数 offset—开始偏移量,也就是代表需要移动的字节数
Whence---可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起
注意:如果偏移是2的时候,偏移量的数必须要为复数
tell()返回文件当前位置
6,案例中要用到的标签库和一些关键字
1, Importcodecs 默认编码Unicode,这样会省去一些转换编码的事情
2, with用法,不需要用fd.close()关闭文件
with codecs.open('3.txt','rb') as fd:
print fd.read()
3,对象序列化与反序列化
通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。并且需要时可以再次将这个对象读取出来。Python中有几个常用模块可实现这一功能。
pickle模块
存储在变量中
dumps(obj)返回存入的字节
读取数据
数据以字节保存在了data变量中,需要再次使用的时候使用loads函数就行
存储在文件中
也可以存在文件中,使得对象持久化。使用的是dump和load函数,注意和上面的区别,少了s。由于pickle写入的是二进制数据,所以打开方式需要以wb和rb的模式
1 2 3 4 5 6 7 8 | # 序列化 with open('abc.pkl', 'wb') as f: dic = {'age': 23, 'job': 'student'} pickle.dump(dic, f) # 反序列化 with open('abc.pkl', 'rb') as f: aa = pickle.load(f) print(aa) |
4,爬一个网页的数据
二、 OS模块操作
os.sep:取代操作系统特定的路径分隔符
os.name:指示你正在使用的工作平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。
os.getenv()和os.putenv:分别用来读取和设置环境变量
os.listdir():返回指定目录下的所有文件和目录名
os.remove(file):删除一个文件
os.stat(file):获得文件属性
os.chmod(file):修改文件权限和时间戳
os.mkdir(name):创建目录
os.rmdir(name):删除目录
os.removedirs(r“c:\python”):删除多个目录
os.system():运行shell命令
os.exit():终止当前进程
os.linesep:给出当前平台的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
os.path.split():返回一个路径的目录名和文件名
os.path.isfile()和os.path.isdir()分别检验给出的路径是一个目录还是文件
os.path.existe():检验给出的路径是否真的存在
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录('.')
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是目录,不是目录就返回false
os.path.isfile(name):判断name这个文件是否存在,不存在返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):或得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.isabs():判断是否为绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名和扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径