python学习part10:第十章 文件和异常

教材:《python:从入门到实践》

今天有别的学习任务,相应的 自由学习时间也就少了,所以今天学习内容不多,估计以后也不能保持很快的进度来学习py了,不过,学无止境,什么时候学都不算晚,慢慢来吧,干巴爹!

越到后面遇到的问题也就多了,之前的学习过程或多或少也还留着些未解决的问题,忘了整理出来。从今起吸取教训,以后遇到的问题贴在这里。

随手记

在本章节的学习过程中遇到了一个有点逗的问题,逗得不是问题,是我。
我在使用附加模式写入文件 ,发现重复运行本程序 ,文档并没有附加内容,反而一直被重写。搞了半天,问这问那,最后发现附加模式的上面使用了覆写模式写入....
所以每次执行程序都会被覆写。

map()函数  
map(function,iterable,iterable...)
他的作用是吧function作用于所有iterable 中的每个元素;
function是函数名。后面的iterable的个数要对应前面函数的形参的个数。
百度查到一篇博文中说map函数的结果以列表的形式返回,但是在
py3的版本中map函数返回的是迭代器,所以要对map()使用list()以期获得真正需要的结果。

.split()方法
比如str.split(分隔符,num)  将str按照指定的分隔符分隔num次,即分成num+1段。
num默认-1(全部分隔),分隔符默认空格(包括回车)   参数可以都不填
split返回值是列表形式

open的模式 r r+ w w+ a a+

上面的图截自风起616的博客园博客。

读写文件时,readlines 、readline、read  这些方法读到哪  读取指针就会指到哪
如果需要再读一遍或者有其它类似需要,可以用seek方法使读取指针重定位。

seek(参数1,参数2)    参数1是偏移位置,代表需要偏移的字节数(受编码影响),参数2可以是0,1,2分别代表从头、当前位置、尾开始读,默认为0。

路径问题
双斜杠\\   或者单反斜杠/

range()函数       构建数值列表最后需放在list函数里才能成为列表。  range步长默认为1 所以如果要建立逆序数值列表,记得声明一个负数步长!

这里注意到json字符串和字典很相似,以后抽空整理一下。

json.dump可以重复写入json数据吗?那如何json.load()读取?下面的图是将json.dump时的模式设为 附加模式的结果,第二次运行程序(即添加了2次数据到json'文件),json.load时就会报错

今天没时间学MySQL,很惭愧。不对,是昨天。今天还有新的任务。

#part 10 第十章  文件和异常
path1='C:\\Users\\13065\\Desktop\\part10.txt'
path2='C:/Users/13065/Desktop/part10.txt'
path3='../../Desktop/part10.txt'
with open(path3) as example:#使用with是为了避免close的麻烦contents =example.read()#read函数读取文件全部内容#教材中讲read()函数在到达文档末尾时会返回一个空字符串并在打印时表现为一空行#但是实际上并没有这样,可能是因为py版本的原因print(contents.strip())
print('----------------------****---------------------')
#路径格式
#1.相对路径
#单斜杠,../表示上一层 需要几层写几层。#2.绝对路径
#用单斜杠表示绝对路径 即/  参考path2
#这里用双反斜杠表示绝对路径,和书上不同。这里用\会报错,需要用\\   参考path1#逐行读取
with open(path1) as text1:'''for line in text1:print(line.strip()+'!')#不加.strip()会有间隔的空白行'''list1=text1.readlines()text1.seek(0,0)#可以用seek'函数重定向读取指针的位置list2=text1.readlines()#list2=list1  #文件只能读一遍?文件读完后,指针指着的位置就是末尾了,空的
for one in list1:print(one.strip()+'?')
union=''
for one in list2:union+=one.strip()
print(union+'********list2****')
path4='C:/Users/13065/Desktop/part10-1.txt'
with open(path4) as big:bigline=big.readlines()
string=''
for one in bigline:string+=one
print(string[:50])#写入文件
path5='C:\\Users\\13065\\Desktop\\part10-2.txt'
with open(path5,'w') as towrite:#如果省略了第二个参数,则默认为只读towrite.write('Nice to meet u!')towrite.write('So do i!\n')#如果需要换行则自己加入换行符towrite.write('difference between \\n and no \\n')with open(path5,'a') as toadd:for one in list1:toadd.write(one)#这里如果加了strip将不会换行
#open的模式:w,w+,r,r+,a,a+   我的易错点:忘记加引号#异常
#try-except 代码块
#直接print(5/0)会提示error的
try:print(5/0)  #这里的代码不是只告诉程序“这是个错误行为”  而是会执行的
except ZeroDivisionError:print('ur chushu =0! its a wrong behavior!')#下面举个例子try:num1,num2=map(int,input('pls input two nums : ').split(','))result=num1/num2
except ZeroDivisionError:print('wrong! chushu cant be 0!')
except ValueError:print('at least a num is not int')
else:#可以吧不出错的结果放在try里,也可以放在else里。print(result)#本块是灵光一闪,想起来要测试一下map函数和split函数,搞懂了,很开心
aaa=input('try to use split').split()
print(aaa)
def get(a,b):return a+b
formap1=[2,3,4]
formap2=[1,2,3]
formap4=[0,4,6]
map1=map(get,formap1,formap2)
print(list(map1))
test1=range(10,6,-1)
print(list(test1))
#可以通过吧with..open代码块写到一个函数中来使用多个文件
#如果你希望程序在error时保持沉默那么,在except错误名的代码块中使用pass#存储数据#使用json.dump()和json.load()
import json
#json.dump()接受两个实参,要存储的数据和要存储进的文件
numbers=[2,3,4,5,6,7]
path6='C:\\Users\\13065\\Desktop\\part10-4.json'with open(path6,'w+') as json1:#这是写入json.dump(numbers,json1)with open(path6) as json2:reader=json.load(json2)#这是读取
print('read result:',reader)#重构
#代码能够正确地运行,但可做进一步的改进 —— 将代码划分为一系列完成具体工作的函数。
#这样的过程被称为 重构
#先把大部分逻辑放到一个函数中,然后在看能不能再把函数中的一部分逻辑拿出来做成另一个函数
#就是重构一次,再重构一次,再再再...

python学习记录part10:读写文件相关推荐

  1. python敏感词过滤代码简单代码,Python学习笔记系列——读写文件以及敏感词过滤器的实现...

    一.读文件 #打开文件,传入文件名和标识符,r代表读 f= open('\\Users\ZC\Desktop\zc.txt','r') #调用read方法一次性读取文件的全部内容,存入内存,用str对 ...

  2. python学习记录三——读写exceld内容代码,openpyxl模块内

    代码如下: from openpyxl import Workbook from openpyxl.compat import range from openpyxl.utils import get ...

  3. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  4. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  5. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

  6. Python学习笔记D9(文件)

    Python学习笔记D9(文件) 文件 1.打开文件 open(file, mode='r') 接收两个参数:文件名(file)和模式(mode),用于打开一个文件,并返回文件对象,如果该文件无法被打 ...

  7. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  8. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

  9. python学习记录——容器篇

    容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...

最新文章

  1. LayUI 走了,JDK17 来了
  2. @font-face详细用法+实例——Web响应式前端学习笔记
  3. js(Dom+Bom)第七天(2)
  4. Seurat | 单细胞分析工具
  5. python将txt转json_Python控制乐高EV3,以及VSCODE环境配置
  6. 收集一些jQueryMobile的插件和案例
  7. Linux 设备树的使用技巧
  8. android横向铺满屏幕,解决安卓自定义Dialog不能水平铺满屏幕
  9. 安装photoshop2022mac遇到安装失败错误代码182解决方法
  10. adt变频器故障代码ol2_英威腾变频器故障代码表
  11. 郁闷,俺被S3C2416 狠狠的暗算了一把。
  12. 域名指向 旧域名跳转到新域名
  13. 这一年在非洲(4年一轮回总结完结)
  14. HTTP协议网络请求状态码
  15. IBM X3650 M4服务器数据恢复成功案例
  16. 怎么用计算机扫描照片,怎么用电脑扫描文件
  17. 制作openstack镜像(qcow2格式的win10系统)
  18. linux系统自动获取ip地址,Linux系统下设置静态IP或自动获取动态IP的简单方法
  19. python变量名区分大小写_Python变量名区分大小写,所以student和Student不是同一个变量。...
  20. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》终期汇报

热门文章

  1. 对计算机导论知识浅显的了解和认识,计算机导论课结课
  2. 故障分析 | Greenplum Segment 故障处理
  3. [译] npm 的经济风云 —— 下半部分
  4. python安装绘图库_python绘图库Matplotlib的安装
  5. delphi adoquery的post和UpdateBatch
  6. 地理信息产业总产值今年将达2600亿元
  7. win系统如何开启Administrator超级管理员帐户
  8. 采购里的“一分钱一分货”,确定你没被套路?
  9. 柠檬汁的人生观-李嘉诚
  10. 一本关于Symbian入门的电子图书,中文版