Python学习Day2笔记(集合和文件操作)
1.集合的使用
列表是有序的可包含重复内容的
集合是无序的不可包含重复内容的
1) 集合关系测试
#列表去重
list_1=[1,4,5,6,7,8,9,7,5,4,23,2] #有重复数据
list_1=set(list_1)
print(list_1,type(list_1))
list_2=set([2,6,0,44,55,3,4])
print(list_1,list_2)
#交集
print(list_1.intersection(list_2))
print(list_1 & list_2) #不分先后顺序 #并集
print(list_1.union(list_2))
print(list_1 | list_2) #不分先后顺序 #差集
print(list_1.difference(list_2)) #1里有2里没有
print(list_1-list_2)
print(list_2.difference(list_1)) #2里有1里没有
print(list_2-list_1) #子集
list_3=set([1,4,6])
print(list_3.issubset(list_1)) #3是否为1的子集 #父集
print(list_1.issuperset(list_3)) #3是否为1的父集 #对称差集
print(list_1.symmetric_difference(list_2)) #1 和2里都没有的
print(list_1 ^ list_2) # 没有交集返回True 有交集返回False
print(list_2.isdisjoint(list_1)) 2)基本操作
#添加
list_1.add(999) #单项
list_1.update([111,112,113]) #多项 #修改
list_1.update([2,3,4]) #删除
list_1.remove("999") #删除不存在的值会报错
#随机删除
list_1.pop()
#删除 传入一个数字
list_1.discard(88) #删除不存在的值不会报错 #长度
len(list_1) #是不是成员
x in list_1 #列表 字典 字符串判断是不是在变量里都是这样写 2.文件操作
1)基本操作 #读取
#data=open("TuDiWord.py",encoding="utf-8").read() #文件保存为对象
f=open("TuDiWord.py",encoding="utf-8") #文件句柄
data=f.read()
data2=f.read() # linux下是按顺序输出的 window下顺序可能会乱
print(data)
print(data2) #写
#f.write("丢火车乐队--茶底世界") #提示错误 不能写 # 写入需要指定打开模式
#r 为读模式 w为写模式 不写默认为读模式
f=open("TuDiWord.py","r",encoding="utf-8")
f.close() # w模式打开文件为创建文件 如果以前有同名文件就会覆盖
f1=open("TuDiWord2.py","w",encoding="utf-8")
f1.write("生命中最善良的时光,\r\n")
f1.write("就像是水一样明亮\r\n") #读写都能进行的模式
#a = append 追加 不覆盖原来的文件
f1=open("TuDiWord2.py","a",encoding="utf-8")
f1.write("记忆里总有人坐在身旁,\r\n")
f1.write("抚摸着我枯萎的肩膀\r\n") #记得关闭
f1.close()
f2=open("TuDiWord2.py","r",encoding="utf-8")
#读一行
print(f2.readline())
#读前N行 例如5行
for i in range(5):
print(f2.readline()) #读整个文件
for line in f2.readlines():
print(line.strip())
#读第10行 low的写法 忘记吧
#readlines 只适合读小文件 读大文件完啦 内存死掉了
for index,line in enumerate(f2.readlines()):
if index==9:
print("我是分割线----------------")
continue
print(line.strip())
#high的写法 内存中只保存一行 效率高
#获取行号要自己搞个计数器了
count=0
for line in f2:
count+=1
if count==10:
print("分割线---------")
print(line)
#打印光标位置
print(f2.tell()) #tell计数为字符个数 不是行数
#所以 再输出f2.tell()不是2
print(f2.read(5))
print(f2.tell())
#光标移动位置
#seek()为回到字符位置
f2.seek(0)
print(f2.tell())
print(f2.readline())
f2.seek(10)
print(f2.readline())
#打印文件编码
print(f2.encoding)
#打印文件名
f2.name #异常处理
f2.errors #返回在内存中的编号
print(f2.fileno()) #是否为终端设备
f2.isatty() #光标是否可移动
#atty文件移动不回去
f2.seekable() #文件是否可读
f2.readable()
#文件是否可写
f2.writable()
#文件是否关闭
f2.closed()
#刷新 将内存中的内容写入到硬盘中
#默认是内存满的时候刷 调用可强制刷新
f2.flush()
f2.close()
#Tips 打印进度条
import sys,time for i in range(20):
sys.stdout.write("#")
# 打印一个刷新一下 否则会20个一起打印出来
sys.stdout.flush()
time.sleep(0.1) # 休眠0.1
f3=open("TuDiWord2.py","a",encoding="utf-8")
#不写为清空
f3.truncate()
#写了数字 截取前10个字符
f3.truncate(10) #无论光标移动到哪都是从头开始截取
f3.seek(50)
f3.truncate(100) f3.close() 2)文件内容读写
#Tips 写读模式是先创建新文件再写内容 可覆盖文件内容 读写模式是可打开原文件在最后追加 #打开方式 r+ 既可读也可写 读写
f4=open("TuDiWord2.py","r+",encoding="utf-8")
f4.readline()
#添加的话会追加到最后
f4.write("-------------")
f4.close() #打开方式 w+ 既可读也可写 写读
f5=open("TuDiWord2.py","w+",encoding="utf-8")
f5.write("------------1\n")
f5.write("------------2\n")
f5.write("------------3\n")
f5.write("------------4\n")
print(f5.tell())
#添加的话会修改光标后的内容
f5.seek(5)
f5.write("can i?")
f5.close()
#追加读 a+ 可读可追加
f6=open("TuDiWord2.py","a+",encoding="utf-8")
f6.write("-----------------")
f6.close() #二进制文件 rb
#不是二进制文件也能读 但会在每行前加 “b”
#应用场景:网络传输 socket
f7=open("TuDiWord2.py","rb")
print(f7.readline())
f7.close() #二进制写
f8=open("TuDiWord2.py","wb")
f8.write("jsiagmldrfh".encode()) #字符串转二进制
f8.close()
3) 文件内容修改
#修改文件方法
#1、把文件内容读取到内存中 修改后再写入到文件中
#2、打开一个文件修改完再重新写到一个新文件中 #文件修改实例
f9=open("TuDiWord.py","r",encoding="utf-8")
f10=open("TuDiWord2.py","w+",encoding="utf-8") for line in f9:
if "生命中最善良的时光" in line:
line=line.replace("生命中最善良的时光","我生命中最善良的时光")
f10.write(line) f9.close()
f10.close()
# 为避免打开文件后忘记关闭,可通过管理上下文 即:
with open("TuDiWord.py","r",encoding="utf-8") as f:
for line in f:
print(line)
#如此方式 当with代码块执行完毕时 内部会自动关闭并释放文件资源
#python2.7之后 可以同时打开 多个文件
with open("TuDiWord.py","r",encoding="utf-8") as f1,\
open("TuDiWord2.py","r",encoding="utf-8") as f2:
pass
3.字符编码
Python学习Day2笔记(集合和文件操作)的更多相关文章
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习,第七课 - 文件操作
Python中对文件的相关操作详解 文件的操作在今后的Python开发中也是使用非常频繁的. 先说下对文件操作的流程 打开文件,得到文件的一个句柄,赋值给一个变量 然后通过句柄对文件进行操作(内容的增 ...
- Python学习Day2笔记(字符编码和函数)
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一 ...
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- Python学习基础笔记(全)
换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...
- Html5 学习系列(四)文件操作API
原文:Html5 学习系列(四)文件操作API 引言 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或者跨 ...
- python03-break、continue、for循环、数据bytes类型、字符串与字节的关系、变量指向与深浅拷贝、set集合、文件操作
目录: 1.break.continue 2.for循环 3.数据bytes类型 4.字符串与字节的关系 5.变量指向与深浅拷贝 6.set集合 7.文件操作 一.break.continue bre ...
- python学习day2(一)
一.上周作业回顾 1.登陆接口: 思路流程: 1.登陆,三次锁定用户 2.用户信息文件,黑名单文件 3.检测黑名单,如输入账号在黑名单中存在,不允许登陆 4.用户密码判断 主要知识点:while,fo ...
- python学习笔记-(七)python基础--集合、文件操作&函数
本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...
随机推荐
- GJM :C#开发 异步处理是目的,多线程是手段
但是BeginAccept和EndAccept不就是system.net.socket封装好的异步socket吗如果用多线程来实现的话那就不叫异步了吧 1.再次强调,异步是目的,多线程是手段. 所谓异 ...
- jquery给div的innerHTML赋值
$("#id").html()=""; //或者 $("#id").html("test");
- slidedoor滑动门特效
slidedoor滑动门特效 exportWidth:暴露门的宽度 width imagesWidth:单张图片的宽度width 每道门每次偏移量 translate=imagesWidth-expo ...
- canvas实现抽奖大转盘
这里不给用JS,下面地址有效果以及详细代码 效果地址:http://sandbox.runjs.cn/show/d2et4rys
- js 模块化的一些理解和es6模块化学习
模块化 1 IIFE 2 commonjs 3 浏览器中js的模块化 4 简单理解模块加载器的原理 5 es6 之前在参加百度前端技术学院做的小题目的时候,自己写模块的时候 都是写成立即调用表达式( ...
- Struts2(1) —— 概述
1.Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发,框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2.Struts2框架的流程原理 ...
- VMware VirtualBox共存时桥接注意
今天在VMware必须桥接的一个虚拟机上需要连接其他机器时,遇到总是连接不到的情况. 具体现象: HOST机器可以ping A机器 VMWare Guest机器无法ping A机器,也无法ping H ...
- Attempt to insert non-property list object 报错原因
NSUserDefault 支持的存储类型有:NSString. NSNumber.NSDate. NSArray.NSDictionary.BOOL.NSInteger.NSFloat等系统定义的数 ...
- SDWebImage添加header
title: SDWebImage添加headerdate: 2016-03-07 17:32:57tags: SDWebImagecategories: IOS keywords: SDWebIma ...
- 【代码笔记】iOS-获得设备型号
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...