Python文件读写

最基本的,通过open返回文件句柄(文件对象),将文件读入内存:

#f是一个文件对象
f=open('./sample.txt')
data=f.read()#read读取所有内容到内存
print(data)
f.close()

close()是必须的,因为文件读取不关闭代表文件句柄泄露,会导致后续的访问速度变慢,在大型数据库中,长期不关闭句柄会导致整个系统崩溃;
大数据不能一次读入内存,最好用readline()一行一行读:

#python处理文件一般是一行一行读
f=open('./sample.txt')
line=f.readline()
while(line):#只要读到line不为空就继续读(空对象和空行不同)'''加strip()的原因:readline在读取时,会把每一行最后面的回车换行符(转义字符)读入,print打印本身会自动添加回车换行,所以用strip()把回车换行去除'''print(line.strip())line=f.readline()
f.close()

上述写法有个缺点:while前就先读了一行,给人一种不整齐的感觉,所以通过break改进一下:

f=open('./sample.txt')
while True:line=f.readline()if line:print(line.strip())else:break
f.close()

上述访问还是代码较多:考虑将文件的行当作对象,用for去循环:

#使用with等于自动封装了一层异常处理,在使用结束后接受异常自动close
with open('./sample.txt') as f:#readlines不同于readline,readlines返回的是一个列表,每个元素就是一行for line in f.readlines():print(line.strip())

从上面可以看出,readlines不同于readline,readlines返回的是一个列表,每个元素就是一行;
readlines还是把整体数据读入内存了,这就又回到了如何读大数据问题,所以考虑用生成器进行改进:

#自定义一个逐行读取函数,返回对象是生成器
def genline(f):while True:line=f.readline()if line:yield lineelse:break
with open('./sample.txt') as f:#genline(f)是一个生成器,生成器必然是迭代器,必然是可迭代对象,所以必然可以用for访问for line in genline(f):print(line.strip())

扩展:Python的with关键字
with关键字等价于

f=open(...)
try:...
except:...
finally:f.close()

最后一句finally代表无论是否有异常都会执行,所以文件句柄总会关闭


目录操作

Windows有盘的概念,Linux没有盘的概念,而是目录,目录操作有必要掌握;
目录递归遍历,可以帮助熟悉os.path.abspath(),os.listdir(),os.path.join(),os.path.isdir()的用法,其输入和返回的对象都是字符串:

import os#递归访问,depth参数用于目录缩进的打印
def dirf(path,depth=0):path=os.path.abspath(path)#获取path的绝对路径,必须在工作目录下的文件才能得到绝对路径files=os.listdir(path)#列出path下的所有文件和文件夹for f in files:print(' '*2*depth,f)#注意f对象本身就是字符串f=os.path.join(path,f)#合并得到完整路径#如果是目录就继续访问if os.path.isdir(f):dirf(f,depth+1)dirf('/py3')

注意path=os.path.abspath(path),获取path的绝对路径,必须在工作目录下的文件才能得到绝对路径;
另外还有一些常用工具:

os.getcwd()#获取当前工作目录
os.environ.get('PATH') #查看环境变量
os.name#查看操作系统类型,nt代表Windows#判断文件后缀:S.endswith(str)
'sample.txt'.endswith('.txt')
#True

练习
一行代码打印指定目录下指定后缀名结尾的文件(不递归)

def getfile(path,postfix):return [file for file in os.listdir(path) if os.path.isfile(file) and file.endswith(postfix)]getfile('.','.txt')

JSON文件

json(JavaSkriptObjectNotation),本质是XML的简化,XML格式为<标签>值</标签>(可嵌套表达),举例:

<Student><name>baijingyi</name><address>CDC</address><gender>male</gender>
</Student>
<Student><name>lakers</name><address>LA</address><gender>male</gender>
</Student>

json表达更加简洁,json有两种数据结构:Object和List,一个花括号{key:value,key:value...}代表一个对象,举例:

{"name":"baijingyi","address":"CDC","gender":"male"}

注意:key是string类型,json的字符串必须用双引号,如果用单引号会解析错误;
列表就是[value,value...],举例:

[1,2,45,"你好"]

dump()和load()以及dumps()和loads()
对于python中的json,还需要掌握dump()和load():
1.dump()用于写json
2.load()用于读json
如果函数名后加了’s’代表json对象是字符串形式,否则json对象是文件形式;
比如dumps()就是将python格式的对象写到json对象,且这个json对象是字符串形式;dump()则是将json对象写入了具体的文件:

import json
data=['a','b',{'x':1,'y':[2,3]},['d','e']]
#将python格式转为json格式,dumps的s代表json用字符串表示,不带s的dump代表将json写入文件
j=json.dumps(data)
print(j)
#>["a", "b", {"y": [2, 3], "x": 1}, ["d", "e"]]#读入json格式字符串,返回python格式
jdata=json.loads(j)
print(jdata)with open('./sever.json') as f:#load用于读入json格式文件,返回python格式jdata=json.load(f)print(jdata)#w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
with open('./dump.json','w+') as f:json.dump(jdata,f)

爬虫简介

首先要知道正则表达式,正则表达式广泛用于爬虫和NLP的语料处理,正则表达式慎用,使用必须有详细注释;
接触爬虫前需要掌握html和css,至少知道html各个元素的含义,了解css不是为了特效,而是为了确定元素的定位;

对于html:
<body>是网页可见部分
<p>代表段落
<h>代表标题

css方面至少要知道Id和Class选择器;
在获取数据后会出现乱码问题,需要查看网页的编码方式,在本地用同样的编码方式解码

第九课.Python文件操作相关推荐

  1. Python之路(第九篇)Python文件操作

    一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r",encoding = &quo ...

  2. Python基础——第八章:Python文件操作

    前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...

  3. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  4. python关闭读写的所有的文件-Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  5. Python文件操作学习总结

    Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open( ...

  6. 【Python】学习笔记总结3(Python文件操作)

    文章目录 三.Python文件操作 1.打开`open('文件名','打开模式')` 2.写操作 3.读操作 4.With上下文管理对象 小结 案例 5.文件定位 三.Python文件操作 1.打开o ...

  7. python文件操作实验总结,[干货分享]Python文件操作技巧总结

    引言 小伙伴们,今天给大家讲解一下python程序下的文件操作完整技巧梳理,都是笔者总结的干货.通过本文阅读,不仅可以带来生产力提升,也可以开发小脚本为生活带来乐趣.         首先不知道大家对 ...

  8. 关于python文件操作

    关于python文件操作 总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当 ...

  9. Python文件操作与函数目录

    文件操作 python文件操作 函数 Python函数学习--初步认识 Python函数学习--作用域与嵌套函数 Python函数学习--匿名函数 python内置函数 Python函数学习--递归 ...

最新文章

  1. 51nod 1490: 多重游戏(树上博弈)
  2. 使用JavaScript选择GridView行的方法汇总
  3. php 订单取消,php – 当订单状态从挂起更改为已取消时发送电子邮件通知
  4. ARM(IMX6U)裸机主频和时钟
  5. icmp报文格式_TCP/IP(二):IP报文格式详解
  6. (转)利用AIR的ServerSocket类让 AIR 做socket服务器
  7. directx最终用户运行时_WSL将支持GPU计算,并可运行Linux GUI应用
  8. [河南省ACM省赛-第三届] AMAZING AUCTION (nyoj 251)
  9. 51nod1712 区间求和
  10. matlab拟合函数参数,matlab怎么拟合函数参数?
  11. MySQL函数-递归函数
  12. 【Data Science · Statistics 02】统计数据从哪里来
  13. Pytorch:卷积神经网络-空洞卷积
  14. 马云收购士兰微_马云出手!阿里36亿拿下千方科技
  15. PROFINET 链路简述
  16. 2020年苹果开学季+教育优惠详细讲解
  17. 使用学信网验证报告免费使用jetbrains全家桶
  18. Alpha版本冲刺(二)
  19. 不一样的“中国速度”,数据可视化交通运输大屏,带你见证中国高铁
  20. 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】

热门文章

  1. JDK8:Lambda表达式操作List集合
  2. Java各版本的重大改变
  3. 真没想到中国有这么猛的软件,杀伤力太强了!
  4. 面试现场:小伙伴美团一面的分享和分析「含解答」
  5. 实践微服务六年,我获得了这些心得体会
  6. 程序员搞事!动手实战优化自己公司线上系统JVM,结果。。。
  7. 海归技术大佬:硅谷科技公司到底牛在哪里?讲透“奈飞文化”8个原则!
  8. 为什么大型互联网都爱用kafka?
  9. 案例 | 河小象:智办事高效驱动组织升级
  10. matlab ezplot hold,matlab中的ezplot函数