python中的基本IO操作:

1) 键盘输入函数:raw_input(string),不作处理的显示,与返回。

         input(string),可以接受一个python表达式作为返回,python内部得到计算结果

2) 文件句柄(file)对象: file对象的创建必须通过open()函数来得到,

    file object = open(file_name, access_mode, buffering)

  file_name, 需要指向的文件的路径,

  access_mode,r,w,a (加号,表示读写权限都有,b表示按二进制格式写入)

          写操作,可以创建文件,但是读操作和追加操作必须是有原文件的基础上的。

  buffering,如果为0,表示系统不会缓存文件内容,为1,表示系统会缓存内容,具体的值,表示缓存具体的大小。

  (rb,与wb的主要区别在,对于换行符的处理,按文本读入的时候,\r\n被自动替换为\n,文本写入的时候,\n被自动替换为\r\n;

    仅仅改变byte流读写的处理,不涉及到程序内部的encode方式;

    很多pkg内部写出的时候,会判读当前os的类型,软件自己处理换行,所以write一般选择wb;

    read操作一般r与rb的结果相同,除非该文件是跨平台的)。

3) stringio,python在内存中开辟一块文本模式的buffer,可以像文件对象一样操作它。

  StringIO(initial_value = '', newline= '\n'),操作与fp类似。  from io  import StringIO

  当调用fp.close的时候,释放当前buffer。

4) byteio,python在内存中开辟一款bytes类型(二进制格式)的buffer,可以像文件一样操作它。

  ByteIO(initial_value = '', newline='\n'),操作与fp类似。  from io import BytesIO

  当调用fp.close的时候,释放当前buffer。

  stringio与byteio类似与C中的malloc,开辟临时buffer的;

  而不是直接在file之间做数据缓存,file是保存在磁盘,速度较慢。

5) 类文件对象,file-like obj

  socket对象,stdin,stdout等都是类文件对象。

数据交换输出格式:

文本文件多用在人机交互的数据交换,一般有doc格式,csv格式;

对于编程语言回见的数据交换,由于都必须使用同一的格式,所以多是xml,或者json格式类型的文件;

python内部obj变量的打包:

  1:pickle包,可以对python内置的obj类型,或者自定义的obj进行序列化。

      数据可以保存在file,stringio等各种buffer中。

      dump(序列化到文件)

      load(返回从文件反序列化的对象)

      pickle.dump(d,f).     d = pickle.load(fp)

  2: json包,对python中的各种obj,保存在类文件中,并且按json的格式.

      dump,load函数。

  序列化到文件,一般都按二进制格式进行文件的open与close。

file object的属性和方法

属性:   1) closed,表示文件是否已经被关闭;

    2) mode,表示文件是以何种方式被打开的;

    3) name,表示文件的路径名字;

方法:   1) close(),关闭文件句柄,同时刷新缓冲区内的信息到文件;

    2) write(),将任何字符串,写入文件,行尾的换行符和原封不动

      writeline(str),将字符串写入文件,

      writelines(seq),参数是列表,自动迭代写入文件

    3) read(count),读出某个大小的字符串,不指定,读取全部;

      readlines(),读取所有行将他们作为一个字符串列表返回,包含\n;

      readline(),读取打开文件的一行,包括行结束符,作为字符串返回

    4) flush(),从内存中,刷新文件;

    5) next(), 返回文件中的下一行;

    6) tell(),返回当前文件对象的位置(不以行为单位);

    7) seek(offset, where),设置文件对象的位置;0表示文件开始,1表示当前位置,2表示文件结尾

文件的open与close必须是对称的,如果文件读写过程中,出现问题,之后的close就执行不到,所以为了解决这个问题,

  多使用try,,,finally,来操作文件;

    try:

      f = open('./../../1.txt',  'r')

      print (f.read())

      ....

    finally:

      if f:

        f.close()

这样来保证file的close,但是这样的书写太过繁琐,所以python引入了with的用法:

  with open('./../1.txt', 'r') as f:

    print (f.read())

这样在with这个复合语句中,调用file object,之后会被自动close,

如果要访问每一行的内容,可以有两种写法

  1) for line in f.readlines():     #readlines()返回的是一个list

     ......

  2) for line in f:       #file object有next函数,是iterable的

     ....

文件的编码格式有字节编码,与二进制编码。

  二进制编码多用在编程语言之间进行数据交流;字节编码多用在人机交互。

  二进制编码多用在机器程序,图片(bmp),视频文件(mkv)的描述,二进制编码本身比较节约资源。

    不能直接可见,需要特殊的解释器来进行翻译。

    基于值编码,不同的文件格式之间,完全没有关系。

  字节文件,从最初的ASCII编码,到utf8/16/32(文件头的bom格式来标记文件是哪一种utf编码),将nbit的数字与特定的字符一一绑定。

    基于byte的定长编码,来方便解析。直接可见。

python中的IO操作的更多相关文章

  1. Python基础之:Python中的IO

    目录 简介 linux输入输出 格式化输出 f格式化 format格式化 repr和str %格式化方法 读写文件 文件对象的方法 使用json 简介 IO就是输入和输出,任何一个程序如果和外部希望有 ...

  2. .NET中的IO操作基础介绍

    关于IO简介 .NET中的IO操作,经常需要调用一下几个类. clipboard[] .FileStream类 文件流类,负责大文件的拷贝,读写. .Path类 Path类中方法,基本都是对字符串(文 ...

  3. python中的赋值操作和复制操作

    之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...

  4. python中的赋值操作

    参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好) python中的赋值操作“=” ...

  5. python中的日志操作和发送邮件

    1.python中的日志操作 安装log模块:pip install nnlog 参数:my_log = nnlog.Logger('server_log.log',level='debug',bac ...

  6. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  7. Python中的字符串操作总结(Python3.6.1版本)

    Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...

  8. Python中的json操作

    Python中的json操作 标签(空格分隔): python 编码 json 字符串前缀问题 字符串前缀可以有r,u r:表示原始(raw)字符串,比如'\n'不会被转义.常用于正则. u:表示un ...

  9. Python中的切片操作

    python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...

随机推荐

  1. ms sql server读取xml文件存储过程-sp_xml_preparedocument

    最近要在存储过程中读取xml中节点的值,然后进行sql操作: 要使用到的系统存储过程如下:sp_xml_preparedocument create procedure [dbo].[pro_Test ...

  2. AFN拿不到cookie,无法存储cookie

    跟雅思的项目对比,发现 task.currentRequest.allHTTPHeaderFields 这样不能拿到cookie 应该这样取: NSHTTPURLResponse *response ...

  3. 【Mysql数据库访问利器】phpMyadmin

    缘由 我们程序员难免要和数据库打交道,经过这几年的锻炼,感觉手写SQL语句已经忘记的差不错了,促使我一定要这篇文章的原因是,有一次晚上我更新某个系统的数据库的表(由于目前公司比较严格,数据库都只能通过 ...

  4. 图->连通性->最小生成树(普里姆算法)

    文字描述 用连通网来表示n个城市及n个城市间可能设置的通信线路,其中网的顶点表示城市,边表示两城市之间的线路,赋于边的权值表示相应的代价.对于n个定点的连通网可以建立许多不同的生成树,每一棵生成树都可 ...

  5. LeetCode 706 Design HashMap 解题报告

    题目要求 Design a HashMap without using any built-in hash table libraries. To be specific, your design s ...

  6. LeetCode 884 Uncommon Words from Two Sentences 解题报告

    题目要求 We are given two sentences A and B.  (A sentence is a string of space separated words.  Each wo ...

  7. Glide加载图片报错You must not call setTag() on a view Glide is targeting

    报错信息为:You must not call setTag() on a view Glide is targeting 原因就是View使用setTag后导致Glide之前请求的标记被清除,强制转 ...

  8. 优云软件又双叒通过CMMI ML3评估 , 研发和质量管理水平创新高

    2017年第三季度,SEI授权的主任评估师对优云软件研发中心进行了CMMI软件能力成熟度模型评估,优云软件顺利通过复评. 这是继2011年12月优云软件首次通过CMMI ML3级的评估认证以来,第二次 ...

  9. java 集合(四)HashSet 与 LinkedHashSet

    查看源码: HashSet底层new 了HashMap 哈希表的结构: Demo: package cn.sasa.demo2; import java.util.HashSet; import ja ...

  10. TZOJ 5640: 数据结构实验:仓库管理

    描述 某百货公司仓库中有一批电视机,按其价格严格从低到高的次序,以链表(链表含头结点)的形式存储于计算机中,链表的每个结点表示同样价格的电视机台数.现在又有m台价格为x元的电视机准备入库,请将其加入到 ...