美文网首页
pythonIO编程

pythonIO编程

作者: dpengwang | 来源:发表于2018-05-18 16:16 被阅读0次

文件读写

读文件

opentype表示打开类型,当打开非utf-8编码的文本时要用encoding之处编码方式,当文本打开的时候因为一些特殊字符导致错误时,用errors=’ignore‘来忽略这些错误

f =open('filenlocation','opentype',encoding='gbk',errors='ignore')

如果文件不存在,open()函数就会抛出一个IOError错误,

f.read() #读取文件的所有内容

最后关闭文件

f.close()

简单方式,操作完自动关闭文件

with open('filelocation') as f:
   pass
写文件:

在打开文件的基础上,用f.write(content)写入文件。用什么方式写用什么编码写都要在open文件的时候用参数表示好。

StringIO和BytesIO

StringIO

含义:在内存中读写str,要把strt写入StringIO,先创建一个StringIO,然后像写文件一样写入

from io import StringIO
f =StringIO()
f.write('hello')
f.write(' world')
print(f.getvalue())

output:

hello world
BytesIO

StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。

BytesIO实现了在内存中读写bytes,我们创建一个BytesIO,然后写入一些bytes:

rom io import BytesIO
f = BytesIO()
f.write(content.encode(编码方式))

tips:

StringIO和BytesIO都可以用内容初始化

f = StringIO('this is a stringIO')
f =BytesIO(b'this is a BytesIO')

操作文件和目录

使用 os模块

获取系统信息os.uname(),Windows下不可用

查看环境变量os.environ

获取某个环境变量的值os.environ.get('key')

创建删除文件夹os.mkdir/os rmdir

拆分路径,分为目录和文件名os.path.split()

os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')

获得扩展名os. path.splitext()

os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')

列出所有文件listdir() 括号内为’.‘表示当前路径

序列化与反序列化

定义:把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

import pickle
d = [1,2,3,4]
#序列化
pickle.dumps(d)
with open("D:/a.txt",'wb') as f:
写入文件
     pickle.dump(d, f)
with open("D:/a.txt",'rb') as f:
#反序列化
    d = pickle.load(f)
print(d)
json与python的转化

序列化用json.dumps(),返回序列化以后的内容

import json
d = dict(name ='bob',age =20,score =80)
print(json.dumps(d))
==> {"name": "bob", "age": 20, "score": 80}

反序列化用 json.loads( )

实例对象的序列化

通过dumps参数里的default参数,令它等于一个转化函数

转化函数写在外面:

import json
class student(object):
    def __init__(self,name,age,sex):
        self.name =name
        self.age =age
        self.sex =sex
def todict(s):
        return {
            'name':s.name,
            'age' :s.age,
            'sex' :s.sex
        }
s =student('bob',16,'male')
print(json.dumps(s,default=todict))

output:

{"name": "bob", "age": 16, "sex": "male"}

转换函数写在里面:

import json
class student(object):
    def __init__(self,name,age,sex):
        self.name =name
        self.age =age
        self.sex =sex
    def todict(self):
        return {
            'name':self.name,
            'age' :self.age,
            'sex' :self.sex
        }
s =student('bob',16,'male')
print(json.dumps(s,default= lambda s: s.todict()))#注意这里有括号

不用自己写函数,使用class自带的函数

import json
class student(object):
    def __init__(self,name,age,sex):
        self.name =name
        self.age =age
        self.sex =sex
    def todict(self):
        return {
            'name':self.name,
            'age' :self.age,
            'sex' :self.sex
        }
s =student('bob',16,'male')
print(json.dumps(s,default= lambda obj: obj.__dic__))#注意这里方法没括号

json转实例对象:json.loads(d)

#定义一个转化函数
def jsontostudent(d):
    return student(d['name'],d['age'],d['sex'])
#object_hook函数把json转dict
print(json.loads(json_str,object_hook=jsontostudent)) 

output

<__main__.student object at 0x000001C0D4588EF0>

相关文章

  • pythonIO编程

    文件读写 读文件 opentype表示打开类型,当打开非utf-8编码的文本时要用encoding之处编码方式,当...

  • 23、pythonIO模型

    python之路——IO模型 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞 ...

  • VS Code python print 输出窗口中文乱码

    要解决这个问题有三种办法: 1. 增加系统全局变量 以 windows 系统为例,添加系统变量: PYTHONIO...

  • 编程方式

    穷举编程 ccv编程 百度编程 谷歌编程 gayhub编程 guess编程 no think 群友编程 小黄鸭调试...

  • 《Python语言程序设计》第一章.练习与作业

    编程题 1.1 编程题 1.2 编程题 1.3 编程题 1.4 编程题 1.5 编程题 1.6 编程题 1.7 编...

  • 探秘Spring AOP

    编程范式概览 面向过程编程 面向对象编程 函数式编程 事件驱动编程 面向切面编程 AOP是什么 是一种编程范式,不...

  • 探秘Spring AOP

    编程范式概览 主要有面向对象编程、面向过程编程、函数式编程、事件驱动编程、面向切面编程。面向过程编程是以过程为中心...

  • python面向对象1

    编程思想 编程思想:面向过程编程(穷人思想)、函数式编程、面向对象编程(富豪) 面向过程编程: 算法和逻辑 函数式...

  • 函数式编程-前置知识(1)

    什么是函数式编程 函数式编程是编程范式之一,我们常听说的编程范式还有面向过程编程,面向对象编程。 面向对象编程的思...

  • 面向指针编程(一)

    面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数...

网友评论

      本文标题:pythonIO编程

      本文链接:https://www.haomeiwen.com/subject/rxwgdftx.html