python自学笔记(4)--Python文件对象、os模块及pickle

来源:互联网 发布:数据库安全性认识 编辑:程序博客网 时间:2024/06/07 07:11

python自学笔记(4)--Python文件对象、os模块及pickle

Python内置函数open()用于打开和创建文件。Open函数有三个参数:文件名,打开模式r只读,w写入,a附加,即从文件尾部附加,模式后面附加“+”表示同时支持输入和输出;模式后加“b”表示用二进制方式打开)和缓冲区参数(定义输出缓存,0表示无缓冲,1表示使用缓冲,负数表示操作系统默认缓冲大小)
p.s.若文件不存在,此时以读方式打开会报错,以写模式或附加模式打开会自动创建文件。使用next的迭代的方式不会移动文件指针,使用readline或readlines会移动文件指针。

'''test.txt原始文件为下面三行文字he decided on roast chicken and vegetables,withapple pie to follow.运行最后的结果是5行文字:he decided on roast chicken and vegetables,withapple pie to follow.write something.write one line.'''f = open('test.txt','rt+')print(f.read(5))#he de读取5个字符print(repr(f.readline()))#'cided on roast chicken and vegetables,\n'第一行的余下部分,包含最后的换行符c = f.tell();print(c)#45print(f.readlines())#['with\n', 'apple pie to follow.']游标在read时会向后移动f.seek(c)#将游标移动到readlines之前 , 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。print(f.__next__())#'with\n'print(f.__next__())#'apple pie to follow.this is writing text.'next后直接调用tell会报错,原因是next函数找那个会置一个_telling标志位为false,而tell中会判断这个标志位。print(f.readlines())#[]print(f.tell())#表明游标cursor位置为71f.write('\n')#写操作同样会让cursor后移print(f.tell())#表明游标cursor位置为73f.write('write something.\n')f.writelines('write one line.')f.flush()f.close()

seek方法说明如下:

seek(offset,whence=0)offset:开始的偏移量,也就是代表需要移动偏移的字节数whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。默认为0 在文本文件中,没有使用b模式选项打开的文件,只允许从文件头开始计算相对位置,从文件尾计算时就会引发异常。

f.truncate(f.tell())#截断文件从文件开始到文件指针所在位置。
f.softspace 0时写入时不会自动加空格,为1时自动加空格
fmode 读写模式


文件系统功能(OS模块)

import ospath = os.getcwd()#获取当前工作路径os.mkdir(path + '//'+ "ddd")#创建一个单级目录os.chdir("D://")#相当于cd命令os.listdir(path)#列出制定目录下的所有文件名os.makedirs(path + '//' + 'hahahrroa'+ '//' + 'ee'+ '//' + 'ee')#创建多级的(含单级)目录os.rmdir(path + '//'+ "ddd") #删除一个目录os.removedirs(path + '//' + 'hahahrroa'+ '//' + 'ee'+ '//' + 'ee')#删除多级目录

文件:    os.mkfifo()#创建管道    os.mknod()#创建设备文件    os.remove()#用来删除文件    os.unlink()用来删除文件    os.rename()重命名文件    os.stat()返回文件状态信息    os.symlink()创建一个文件链接    os.utime()更新时间戳    os.tmpfile()创建并打开一个新的临时文件    os.walk()遍历目录下的文件目录访问权限:    os.access()判定某一用户对指定目录是否有权限    os.chmod()修改目录或文件的权限    os.chmod(path, 0o0777)    os.chown()    os.umask()设置默认权限模式文件:    open()    read()    write() 设备文件:    mkdev()创建设备    major()从指定设备的    minor()  os.path:    跟文件路径相关       basename():路径基名       dirname():路径目录名       join():将多个离散的基名和路径名连接起来       split():返回dirname和basename的元组     信息:       getatime():       getctime():       getmtime():       getsize():返回文件大小    查询:       exists():判断指定文件是否存在       isabs():判断指定的路径是否为绝对路径       isfile():是否为文件       isdir():是否为路径       islink():是否符号链接       ismount():是否为挂载点       samefile():两个路径是否指向同一个文件


pickle对象的持久存贮(对象的流转化)
pickle(与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。)在编程时可以将一些大数据的字典通过pickle写入到文件中,这样可以减少代码文件的大小,使得程序更加的优雅。

import osimport pickled1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6};path = os.getcwd();f1 = open(path + '//' + 'text.txt', 'wb+')#此处必须是wb,否则会报错,pickle默认是以二进制来进行读取的pickle.dump(d1, f1)#讲字典数据写入到text.txt中,将字典数据倒入泡菜缸中f1.flush()f1.close()f6 = open(path + '//' + 'text.txt', 'rb')#此处必须有rb,否则报错d2 = pickle.load(f6)# 从text.txt中读取数据到字典中print(d2)#{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
原创粉丝点击