Pyhton学习——Day9
#文件操作的其他方法 ##############################################################################
#文件的内置操作函数
# 1.closed 查看文件是否是关闭的状态,输出为布尔值,关闭的为True,未关闭的为False
# 2.encoding表示编码的形式,函数方法打开的编码形式
# print(f.encoding)
# cp936
#************************************************************************
#不知道文件编码是什么形式的情况下,还是要写文件或读文件的信息,处理办法:
#用拉丁文的方式打开文件latin-1
# f = open('test','r+',encoding='latin-1')#尽可能多的保留数据
# data = f.read()
# print(data)
# f.write('aaaaaaaa')
#文件的编码获取的是系统的默认编码
# f = open('test','r+',encoding='UTF-8')
# f.flush()#刷新,使用这个命令就会保存文件
# f.isatty()#终端设备
# print(f.tell())
# f.readline()
# f.readline()
# print(f.tell())#光标的当前位置
#newline=''就是不要python自带的屏蔽参数
#文件内光标的移动:除了read()代表读取3个字符,其余的文件内光标的移动都是以字节为单位,如seek、tell、read
# f.seek(3)
# print(f.read())
# 456
# 789
# opqsdasdnagaaaaaaaaaaaaaaaa
# print(f.read(5))
# 123
# 4
# f.truncate(10)#文件截断,属于文件的切割写操作
# print(f.truncate(10))
#####################################################################
# f = open('test','rb')
# print(f.tell())
# f.seek(10)
# print(f.tell())
# f.seek(3)
# print(f.tell())
#seek的移动光标默认是从0的位置开始移动
#############################################################
#seek的几种用法
#1.必须为'rb'模式才可以使用
#参数1为接指定上一次光标后的位置
#参数2为倒序,从结尾开始的光标,前面的顺序必须为负数的形式
# print(f.tell())
# f.seek(-1,2)
# print(f.tell())
# f.seek(3,1)
# print(f.tell())
#################################################################################################################
#高端玩法:打开大文件的最后一行
# f = open('test','rb')
# for i in f:
# offs = -5#偏移量需要自己估计,最后一行大约有多少个字节
# while True:#做一个死循环
# f.seek(offs,2)
# rows = f.readlines()#从当前光标位置开始读取一行的所有内容
# if len(rows) > 1:#如果文件读取的行数超过1行,则打印最后一行
# print('文件的最后一行是%s'%(rows[-1].decode('UTF-8')))
# break
# offs*=2
# 文件的最后一行是+---------------------------------------------------------------------------+
#***************************************************************************************************************#
# 什么是递归?
# 函数自己调用自己的方法就是递归
# 什么是迭代?
# 可以被for循环遍历的,每次循环得到的结果都是上一次的结果得出的
# 什么是迭代器协议?
# 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,
# 以终止迭代(只能往后不能往前退)
# 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法)
# 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环、sum、min、max函数等)使用迭代器协议访问对象
# l = [1,2,3,4]
# for i in l:
# print(i)
######################Python的for循环机制##########################################################
# for循环的本质:循环所有的对象,全都是使用迭代器协议
#(字符串、列表、元祖、字典、集合、文件对象)这些都不是可迭代对象,只不过在for循环式,调用了内部的_iter_方法,变成了可迭代对象
# 然后for循环调用可迭代对象的_next_方法去取值,而且for循环会捕捉Stoplteration异常,以终止迭代
# l = [1,2,3,4]
# for i in l: #1.先执行_iter_(),再执行next方法
# print(i) #捕捉了异常,不再迭代
# l = [1,2,3,4]
# iter = l.__iter__()#遵循迭代器协议,生成可迭代对象
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# print(iter.__next__())
# l = [1,2,3,4]
# index = 0
# while index<len(l):
# print(l[index])
# index+=1
# 1
# 2
# 3
# 4
Pyhton学习——Day9的更多相关文章
- Pyhton学习——Day9(阶段性练习)
# 1.文件内容如下,标题为:姓名,性别,年纪,薪资## egon male 18 3000# alex male 38 30000# wupeiqi female 28 20000# yuanhao ...
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- python学习day9
目录 一.队列 二.生产者消费者模型 三.协程 四.select\poll\epoll 五.paramiko 六.mysql API调用 一.队列(queue) 队列分以下三种: class queu ...
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- python学习Day9 内存管理
复习 :文件处理 1. 操作文件的三步骤:-- 打开文件:此时该文件在硬盘的空间被操作系统持有 | 文件对象被应用程序持用 -- 操作文件:读写操作 -- 释放文件:释放操作系统对文件在硬盘间的持有 ...
- Python学习-day9 线程
这节内容主要是关于线程的学习 首先要了解的什么是进程,什么是线程 进程与线程 什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称 ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
随机推荐
- xshell 连接 ubuntu 16.04报错
outgoing encryption 错误 使用xshell和xftp连接 ubuntu 16.04 时出现找不到匹配的 outgoing encryption 算法的错误提示. 问题阐述: 在 ...
- 普通平衡树 Splay
Code: #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ...
- BitmapMesh动画
一.概要 我们经常用到Canvas.drawBitmap方法,却很少用到Canvas.drawBitmapMesh方法.这个方法为我们做图片变形提供了无限可能,同时也对数学功底有较高的要求.下面先看一 ...
- 元素隐藏的方式之--hidden,display,visibility
<html lang="en"> <head> <meta charset="UTF-8"> <title>标签 ...
- 【JavaScript框架封装】实现一个类似于JQuery的缓存框架的封装
// 缓存框架 (function (xframe) { /** * 实现了缓存框架的临时存储功能(内存存储) * @type {{data: Array, get: (function(*): *) ...
- 【JavaScript框架封装】实现一个类似于JQuery的CSS样式框架的封装
// CSS 样式框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法)[只要是需要使用到this获取到的元素集合这个变量的时候, ...
- 训练1-N
给出N个整数,对着N个整数进行排序 Input 第1行:整数的数量N(1 <= N <= 50000)第2 - N + 1行:待排序的整数(-10^9 <= Ai <= 10^ ...
- [tyvj 1071] LCIS
题目描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对于两个串A,B,如果它们 ...
- mysql 每个月创建新表
1.CREATE DEFINER=`root`@`%` PROCEDURE `aa`()BEGIN SET @sqlstr = CONCAT('create table cdrpbx10_',DATE ...
- yii 表单小部件使用
首先创建model层 因为要使用表单小部件 所以要加载相应的组件 这里需要的组件有 yii\widgets\ActiveForm 和 yii\helpers\Html 接下来在model定义的clas ...