您的位置:首页 > 编程语言 > Python开发

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

2017-12-04 15:28 555 查看
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,
with
apple pie to follow.
运行最后的结果是5行文字:
he decided on roast chicken and vegetables,
with
apple 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)#45
print(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位置为71
f.write('\n')#写操作同样会让cursor后移
print(f.tell())#表明游标cursor位置为73
f.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时自动加空格

f.mode 读写模式


文件系统功能(OS模块)

import os
path = 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 os
import pickle
d1 = {'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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: