一、集合操作

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
 s = set([1,4,5,7,3,8,7,9,6])      #创建一个数值集合  

 t = set("Hello")         #创建一个唯一字符的集合  

 a = t | s          # t 和 s的并集  

 b = t & s          # t 和 s的交集  

 c = t – s          # 求差集(项在t中,但不在s中)  

 d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  

 基本操作:  

 t.add('x')            # 添加一项  

 s.update([10,37,42])  # 在s中添加多项  

 使用remove()可以删除一项:  

 t.remove('H')  

 len(s)
set 的长度 x in s
测试 x 是否是 s 的成员 x not in s
测试 x 是否不是 s 的成员 s.issubset(t)
s <= t
测试是否 s 中的每一个元素都在 t 中 s.issuperset(t)
s >= t
测试是否 t 中的每一个元素都在 s 中 s.union(t)
s | t
返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t)
s & t
返回一个新的 set 包含 s 和 t 中的公共元素 s.difference(t)
s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素 s.symmetric_difference(t)
s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素 s.copy()
返回 set “s”的一个浅复制

二、文件操作

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

打开文件的模式有:

详细信息可以参考http://www.cnblogs.com/zhangqigao/articles/6484403.html

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

现有文件如下:

 Somehow, it seems the love I knew was always the most destructive kind
不知为何,我经历的爱情总是最具毁灭性的的那种
Yesterday when I was young
昨日当我年少轻狂
The taste of life was sweet
生命的滋味是甜的
As rain upon my tongue
就如舌尖上的雨露
I teased at life as if it were a foolish game
我戏弄生命 视其为愚蠢的游戏
The way the evening breeze
就如夜晚的微风
May tease the candle flame
逗弄蜡烛的火苗
The thousand dreams I dreamed
我曾千万次梦见
The splendid things I planned
那些我计划的绚丽蓝图
I always built to last on weak and shifting sand
但我总是将之建筑在易逝的流沙上
I lived by night and shunned the naked light of day
我夜夜笙歌 逃避白昼赤裸的阳光
And only now I see how the time ran away
事到如今我才看清岁月是如何匆匆流逝
Yesterday when I was young
昨日当我年少轻狂
So many lovely songs were waiting to be sung
有那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
I ran so fast that time and youth at last ran out
我飞快地奔走 最终时光与青春消逝殆尽
I never stopped to think what life was all about
我从未停下脚步去思考生命的意义
And every conversation that I can now recall
如今回想起的所有对话
Concerned itself with me and nothing else at all
除了和我相关的 什么都记不得了
The game of love I played with arrogance and pride
我用自负和傲慢玩着爱情的游戏
And every flame I lit too quickly, quickly died
所有我点燃的火焰都熄灭得太快
The friends I made all somehow seemed to slip away
所有我交的朋友似乎都不知不觉地离开了
And only now I'm left alone to end the play, yeah
只剩我一个人在台上来结束这场闹剧
Oh, yesterday when I was young
噢 昨日当我年少轻狂
So many, many songs were waiting to be sung
有那么那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
There are so many songs in me that won't be sung
我有太多歌曲永远不会被唱起
I feel the bitter taste of tears upon my tongue
我尝到了舌尖泪水的苦涩滋味
The time has come for me to pay for yesterday
终于到了付出代价的时间 为了昨日
When I was young
当我年少轻狂

yesterday

基础操作:

1、文件读取

 f = open("yesterday","r",encoding="utf-8")
first_line = f.readline()
print("read first line:",first_line)
print("我是分割线".center(50,'-')) #打印内容居中,其他‘-’
d = f.read() #读取文件中剩余内容
print(d)
f.close()

2、文件覆盖写入

 #w模式是已写打开文件,实质是创建一个文件,因此会覆盖原文件
f = open("yesterday3","w",encoding="utf-8")
f.write("为了不覆盖,\n重新建立")

3、追加写入

 f = open("yesterday3","a",encoding="utf-8")
f.write("我是新的数据,\n来读取我看看")
f.close()

4、读取多行文件

 #读文件前5行
f = open("yesterday","r",encoding="utf-8")
for i in range(5):
print(f.readline().strip())

5、有条件部分读取

方法一:(内存缓存)

 #读取全部文件,到第十行就结束
f = open("yesterday","r",encoding="utf-8")
for index,line in enumerate(f.readlines()):
if index == 9:
print("-----我是分割线-----")
break
print(index,line.strip())

方法二:(高效读取)for line in f:

 f = open("yesterday","r",encoding="utf-8")
count = 0
for line in f: #文件逐行读取,效率最高,此时line已不为列表,需要重新计数
if count == 9:
print("---我是分割线---")
count +=1
break
print(line.strip())
count +=1

6、读取光标位置tell()

 f = open("yesterday","r",encoding="utf-8")
print(f.tell())
print(f.readline().strip())
print(f.tell())

7、移动光标位置,光标返回0的位置

 f = open("yesterday","r",encoding="utf-8")
print(f.tell())
print(f.readline().strip())
print(f.tell())
f.seek(0)
print(f.tell())

8、打印文件编码

 f = open("yesterday","r",encoding="utf-8")
print(f.encoding)

9、打印读取文件的IO接口

 f = open("yesterday","r",encoding="utf-8")
print(f.fileno())

10、强制刷新,写数据时,写的数据不想存内存中缓存中,而是直接存到磁盘上,需要强制刷新。flush()

 >>> f = open("yesterday2","w",encoding="utf-8")
#这时'hello word'在缓存中
>>> f.write("hello word")
10
#强刷到磁盘上
>>> f.flush()

11、进度条,体会flush的作用

 import sys,time

 for i in range(50):
sys.stdout.write(">")
sys.stdout.flush()
time.sleep(0.5)

12、文件内容替换

 #文件中内容替换

 f = open("yesterday3","r",encoding="utf-8")
f_new = open("yesterday3.bak","w",encoding="utf-8") for line in f:
if "我是第十行" in line:
line = line.replace("我是第十行","今天是星期二")
f_new.write(line)
f.close()
f_new.close()

13、with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

 with open('log','r') as f:

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

 with open('log1') as obj1, open('log2') as obj2:
pass

Day2-Python基础2---集合和文件操作的更多相关文章

  1. python基础(四)文件操作和集合

    一.文件操作 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 1.文件基本操作: f = open('file.txt','r') # ...

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

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

  3. NO.3:自学python之路------集合、文件操作、函数

    引言 本来计划每周完成一篇Python的自学博客,由于上一篇到这一篇遇到了过年.开学等杂事,导致托更到现在.现在又是一个新的学期,春天也越来越近了(冷到感冒).好了,闲话就说这么多.开始本周的自学Py ...

  4. python基础(三)-- 文件操作

    一. 文件操作: 对文件操作流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 现有文件如下 : Somehow, it seems the love I kn ...

  5. Python之路:Python 基础(三)-文件操作

    操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') # 还有一种方法open 例1.创建文件  f = file('myfile. ...

  6. Python基础(七)-文件操作

    一.文件处理流程 1.打开文件,得到文件句柄赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 二.基本操作 f = open('zhuoge.txt') #打开文件 first_line = ...

  7. python基础 (编码进阶,文件操作和深浅copy)

    1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码. 即先将其他编码的字符串解码(decode)成unicode,再从uni ...

  8. python3速查参考- python基础 5 -> 常用的文件操作

    文件的打开方式 打开方式 详细释义 r  以只读方式打开文件.文件的指针会放在文件的开头.这是默认模式. rb  以二进制只读方式打开一个文件.文件指针会放在文件的开头. r+  以读写方式打开一个文 ...

  9. python基础--字符编码以及文件操作

    字符编码: 1.运行程序的三个核心硬件:cpu.内存.硬盘 任何一个程序要是想要运算,肯定是先从硬盘加载到当前的内存中,然后cpu根据指定的指令去执行操作 2.python解释器运行一个py文件的步骤 ...

  10. python基础一 day7 复习文件操作

    read()原样输出 读取出来的是字符串类型 readline()输出一行 读取出来的是字符串类型 readlines()把每行文本作为一个字符串存入列表,并返回列表 打开方式: b以bytes类型打 ...

随机推荐

  1. 在Linux终端中查看公有IP的方法详解

    首先回顾一下一般的查看IP的命令: ifconfigLinux查看IP地址的命令--ifconfigifconfig命令用于查看和更改网络接口的地址和参数 $ifconfig -a  lo0: fla ...

  2. Go struct tag

    struct成员变量标签(Tag)说明 要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用.但是由经常 ...

  3. java写出图形界面

    1. 做出简单的窗体 package javaGUI; import java.awt.BorderLayout; import java.awt.Color; import javax.swing. ...

  4. PHP(Zend Studio)入门视频

    视频地址: http://www.ev-get.com/article/2014/5/9/20962.html (去掉地址中的减号-:可以看视频) Zend Studio教学视频之Zend Studi ...

  5. java入门了解03

    ASSCII表 . 1.final关键字    (1)含义:最终的意思,修饰方法,类,变量    (2)特点:          A:修饰类,不能被继承          B:修饰的方法,不能被重载  ...

  6. 用java.lang.Math.random()语句,随机输出{size:自定义参数}个数不重复并且按顺序从小到大排列(冒泡排序)

    package com.test; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lan ...

  7. HDFS数据复本存放

    复本怎么放Hadoop的默认布局策略是在运行客户端的节点上放第一个复本(如果客户端运行在容器之外,就随机选择一个节点,不过系统会避免挑选那些存储太满或太忙的节点).第二个复本放在与第一个不通且随机另外 ...

  8. sshfs的挂载与卸载

    在CentOS中 sshfs的使用依赖EPEL(只安装sshfs不会出错,但是却无法使用) 挂载 安装EPEL rpm -i https://dl.fedoraproject.org/pub/epel ...

  9. python基础1 - 多文件项目和代码规范

    1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 –  一个项目通常会包含 很多源文件 在 ...

  10. 动态链接库(dll)文件的动态调用(使用动态链接库,解析Wis文件--测井数据文件的一种)

    在画出井眼轨迹后,老师又给了三口井的数据,不过这次给的数据是WIS格式的,可以使用一个动态链接库进行解析,解析结束后会生成一个固定格式的txt文件,然后再读取txt文件,画井眼轨迹. 学长给了一个可以 ...