元组

元组是最后一个python集合类型.元组由简单的对象构成,元组与列表非常相似,只不过元组不能在原处修改,并且通常写成圆括号,虽然元组部支持任何方法调用,但元组具有列表的大多数属性.

实际应用中的元组
元组的特殊语法:逗号和圆括号
如果圆括号里单一对象是元组对象而不是一个简单的表达式,需要对python进行特别说明,如果确实想要得到一个元组,只要在单一元素后面,圆括号之前加一个逗号就可以了,

>>>x = (40)   integer
>>>x
40

>>>x = (40,)  tuple
>>>x
(40,)

转换,方法以及不可变性

值得注意的是 +  * 以及分片操作应用于元组时,将会返回一个新数组,并且元组不提供字符串,列表和字典中的方法,

>>> t = ('cc','aa','dd','bb')
>>tmp = list(t)
>>>temp.sort()
>>>temp
['aa','bb','cc','dd']
>>> t = tuple(temp)
>>>t
('aa','bb','cc'.'dd')

列表解析也可以用于元组
>>>t = (1,2,3,4,5)
>>>l = [x+20 for x in t]
>>>l

[21,22,23,24,25]

index和count 也对元组进行了定义

>>> t = (1,2,3,2,4,2)

>>>t.index(2)    寻找第一次出现2的索引
1

>>>t.index(2,2)      在偏移2之后2出现的索引
3
>>>t.count(2)    2出现了多少次

元组的不可变性只适用于元组本身顶层,而非其内容,元组内部的列表还可以像往常那样修改
>>>t = (1,[2,3],4)
>>>t[1] = 'spam'
出错
>>>t[1][0] = 'spam'
>>>t
(1,['spam',3],4)

--------------------------------------------

文件

打开文件
程序内部调用open函数,首先是外不名,接着是处理模式,模式典型的用字符串r代表输入打开文件,w为输出打开文件,a代表在文件尾部追加内容打开文件,
1,在模式字符串尾加上b可以进行二进制数据处理

2,加上+意味着同时为输入和输出打开文件.

实际使用中

>>>myfile = open('myfile.txt','w')
>>>myfile.write('hello text file\n')
>>>myfile.write('good bye text file\n')
myfile.close();

>>>myfile = open('myfile.txt','r')
>>>myfile.readline()
'hello text file\n'
>>>myfile.readline()
'good bye text file\n'
>>>myfile.readline()        表明已经达到文件的尾部返回一个空的字符串
''

如果想把整个文件读入字符串然后打印

>>>open('myfile.txt','r').read()
'hello text file\good bye text file\n'

>>>print(open('myfile.txt').read())
hello text file
good bye text file

如果想要一行一行的扫描文本文件,这个往往是最佳选择
>>> for line in open('myfile','r')
    print(line ,end = '')

hello text file
good bye text file

当读取二进制文件的时候,得到一个bytes对象,
>>>data = open('data.bin','rb').read()
>>>data
b '\x00\x00\x00\x07spam\x00\x08'
在文件中存储并解析python对象

>>>x,y,z = 43,44,45
>>>s = 'spam'
>>>d = {'a:1','b':2}
>>>l = [1,2,3]

>>>f = open('datafile.txt','w')
>>>f.write(s+'\n')
>>>f.write('%s,%s.%s\n' %(x,y,z))
>>>f.write(str(l)+'$'+str(d)+'\n')
>>>f.close()

>>>chars = open('datafile.txt','r').read()
>>>print(chars)
spam
43,44,45
[1,2,3]${'a':1,'b':2}

>>>f = open('datafile.txt')
>>>line = readline()
>>line
'spam\n'
>>>line.rstrip()  移除尾部的换行符
'spam'

>>>line = readline()
'43,44,45\n'
>>>parts = line.split(',')
>>>parts
['44','44',45']

>>>number = [int(p) for p in parts]
>>>number
[43,44,45]

使用pickle 存储python的原生对象

pickle 模块是能够让我们直接在文件中存储几乎任何python对象的高级工具,并不要求我们讲字符串转来转去

>>>d = {'a':1,'b':2}
>>> f = open('datafile.pkl','wb')
>>>import pickle
>>>pickle.dump(d,f)
>>>f.close()

如果想要取回字典时,只要在pickle重建一次

>>>f = open('datafile.pkl','rb')
>>>d = pickle.load(f)
>>>d
{'a':1,'b':2}

python学习之元组与文件的更多相关文章

  1. Python学习笔记之从文件中读取数据

    10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...

  2. Python学习(15)文件/IO

    目录 Python 文件I/O 打印到屏幕 读取键盘输入 打开和关闭文件 File对象属性 文件定位 重命名和删除文件 Python的目录 Python 文件I/O 本章只讲述所有基本的的I/O函数, ...

  3. Python学习之路4 - 文件操作&编码转换

    文件操作 文件操作大概分三步: 把文件打开. 操作文件. 把文件关上. 打开文件 打开文件用open()函数,打开成功后返回一个资源,具体语法如下. open(要打开的文件,打开方式,打开文件的格式, ...

  4. python基础之元组、文件操作、编码、函数、变量

    1.集合set 集合是无序的,不重复的,主要作用: 去重,把一个列表变成集合,就可以自动去重 关系测试,测试两组数据的交集,差集,并集等关系 操作例子如下: list_1 = [1,4,5,7,3,6 ...

  5. Python学习笔记六:文件处理

    一:打开文件 open(name,mode,[bufferSize]) name:文件路径 mode:文件打开方式 二:文件读取 read()方法:可以一次读取文件的全部内容,Python把内容读到内 ...

  6. Python 1.3 元组与文件

    一 Python元组Tuple类型 元组T= (1, 2, 3, 4)是不可变类型,属于序列,但顶层元素不可变,仅支持count()和index()操作. -*- coding:UTF- -*- # ...

  7. python 学习笔记(十二) 文件和序列化

    python 文件读写和序列化学习.## python文件读写`1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ` ...

  8. python学习——查找计算机中文件位置

    有时想查找某个文件时,却忘记了文件在计算机中存放的位置,这是一个经常遇到的问题. 当然如果你使用windows 7的话,可以直接用右上角的搜索框来搜索. 最近在学习python,正好拿这个来练练手,写 ...

  9. Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

    文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() ...

随机推荐

  1. python迭代器生成器(三)

    扩展的列表解析语法 今天接着昨天的继续写. 列表解析可以变得更加复杂---例如,它可以包含嵌套的循环,也可能被编写为一系列的for子句.(这里只是简单介绍一下,以后再说这个语法的问题) 例如:构建一个 ...

  2. App Extensions篇之Share Extension

    转载请注明出处:http://www.cnblogs.com/zhanggui/p/7119572.html 1.前言 这里主要是对App Extension的一些介绍以及详细给大家介绍一下Share ...

  3. <jsp:include>和<%@include%>的区别

    个人笔记(并非自己总结,而是从别人的博客上看到的) <jsp:include> :动态包含 1.<jsp:include>包含的是html文件 举例: DynamicInclu ...

  4. PHP发送E-mail---新手教程

    首先下载PHPmailer拓展包,其实就是别人封装好的类库,下载链接:http://pan.baidu.com/s/1slbhGo1 首先去163注册个账号,然后登陆进去,点击设置下面的 POP3/S ...

  5. Java基础语法<八> 继承

    1.超类和子类 超类和子类 父类与子类 多态: 一个对象变量可以指示多种实际类型的现象称为多态 一个变量可以引用父类对象,也可以引用其子类对象,这就是多态. 不能将一个超类的引用赋给子类变量,因为调用 ...

  6. tomcat一个端口配置多个项目

    在server.xml中增加host节点 <Host name="localhost" appBase="webapps" <!--这是默认的--- ...

  7. C++第一篇--类的引入

    C++第一篇--类的引入 1. 用C语言输出两个人的信息 Person1.c:通过字符实现 #include <stdio.h> int main(int argc,int **argv) ...

  8. redhat系列linux系统 修改主机名的正确方法

    ##注:无特别说明,以下称呼的linux系统统一视为redhat系linux redhat系列linux系统 如果想修改主机名 很多人可能都会以为是: $hostname NEW-NAME 或者在 / ...

  9. Phpcms安装前后域名默认访问路径

    一.安装前 phpcms下载后index.html文件内容如下图,在本地服务器配置项目虚拟域名后,访问域名后直接跳到:域名/install/install.php,然后出现安装界面. 二.安装之后 提 ...

  10. QuartusII 13.0 PLL IP Core调用及仿真

    有一个多月没用用Quartus II了,都快忘了IP 是怎么用调用的了,还好有之前做的笔记,现在整理出来,终于体会到做笔记的好处. 一.  QuartusII的pll的调用 打开软件界面 Tool—— ...