Python 文件操作(1)
今天大佬给了个A文件给我,里面存放了机密数据。
什么机密数据???
有帅哥的联系方式吗?
赶紧打开来看一下
1.open() 函数基本版
Python大佬有个内置开文件的函数open(), 专门开文件的。它能打开一个文件,并且返回一个文件对象。(这个文件对象对应有一系列函数,用起来贼方便,这里不细讲,下篇见)
下面看一下它的语法:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
当然,一般我们会用到前面两个参数,一个为文件的路径(你要告诉人家地址,可以是绝对地址,也可以是相对地址,这样才能找到帅哥的家门呀);另一个用于指定你要以什么样的方式打开这个文件(有读、有写,具体方式见下面的讲解,默认使用'r',只读模式)。encoding呢,你乱码的时候找它就对了。
举个栗子
open('secret.txt')
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-1-0b7125542668> in <module>()
----> 1 open('secret.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'secret.txt'
没文件!!!你竟敢把秘密藏起来
突然,想起,原来我把secret放在G盘了,写相对路径去找是不OK的呀
好啦好啦,我再开一遍
open('G:\Python\secret.txt', 'r')
<_io.TextIOWrapper name='G:\\Python\\secret.txt' mode='r' encoding='cp936'>
open('G:\Python\secret.txt')
<_io.TextIOWrapper name='G:\\Python\\secret.txt' mode='r' encoding='cp936'>
找到秘密文件啦!!!
如果你只是想只读这个文件,写不写'r'都行,make no difference
一般,我们会把这个文件对象挂个标签,叫他f什么的,那么后面就可以随意来个读、写操作
下面来示范操作
f = open('G:\Python\secret.txt')
f.read()
'[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]'
2.open() 进阶版——打开文件的方式
mode常见用法
mode参数千千万,第一次看的时候,我整个人是晕的
(你也太浮夸了),下面是一些常用的参数:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
b 以二进制形式打开二进制文件,比如图片、视频、音频。
'+ ' 打开一个文件进行更新(可读可写)(通杀)
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件,如图片等。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
更详细的可参见菜鸟教程相关文档。
**Remember that: **
r : read(读)
w : write(写)
a : append(附上,在后面加上)
英语学得好,写代码都简单一点
今天不讲读写操。先讲关闭文件。
3.关闭文件
3.1 一般关闭文件
文件使用完毕后一定一定要关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。
f.close()
酱就行了。
但是,打开文件,不一定都能打开呀,有时候打不开会报IOError,然后后面写的f.close()就不会被调用了。
有没有办法解决这个问题呢?
大佬们早解决了
优化版关闭文件
法一:try … finally …
try:
f = open('G:\Python\secret.txt')
print(f.read())
finally:
if f:
f.close()
[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]
上面看起来很繁琐,再来优化:
法二:with open(xxx) as f:
with open('G:\Python\secret.txt') as f:
print(f.read())
[Jason:21, 179, 70, 18813975806],[K:22, 180, 75, 18813975111]
今天主讲开关文件,后面讲解读写操作,嗯,see you next time!
Python 文件操作(1)的更多相关文章
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- python 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- 云计算服务模式(SaaS/PaaS/IaaS)
为什么是云计算,为什么是现在 商用云:商用云的设计初衷是将基础设施商品化,并以较低的成本对外提供,是用户能够获得高扩展性和自服务能力. 企业云:企业级云的目的,则是达到或超过它所要替代的本地基础设施的 ...
- Burpsuite—渗透测试神器
Google浏览器插件---SwitchyOmega Firefox浏览器插件---SwitchyOmega hosts代理工具---SwitchHosts[右击使用管理员权限打开] 双击burp-l ...
- Andrew Ng机器学习课程11之使用machine learning的建议
Andrew Ng机器学习课程11之使用machine learning的建议 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 2015-9-28 艺少
- angular入门 - 环境安装及项目创建
1.安装node.js 下载,安装,在终端测试安装是否成功:node -v(查看nodejs版本) npm -v(查看npm版本) 下载地址:https://nodejs.org/en/downloa ...
- Netty学习笔记(一)——nio基础
Netty简单认识: 1) Netty 是由JBOSS 提供的一个Java 开源框架. 2) Netty 是一个异步的.基于事件驱动的网络应用框架,用以快速开发高性能.高可靠性的网络I0 程序. 3) ...
- Jupyter修改工作目录(Anaconda环境)
Anaconda安装时未添加环境变量 1.打开Anaconda Prompt 输入jupyter notebook --generate-config (base) C:\Users\Sroxi> ...
- 使用Struts2实现图片上传和拦截器
今天来分享一个图片上传 现在很多小项目里面基本上都有要显示图片的功能,所以呢图片上传是基本要掌握的啦 一般的图片上传原理就是从本地选择一张图片然后通过io流发布到服务器上去 上传方案基本有三种: 1. ...
- s5p6818裸机程序的设计:以GPIO为例
为了调试方便,首先确保对于硬件的控制没有问题. Makefile # Makefile edited by Schips # 2019-06-21 schips@dingtalk.com # 文件类型 ...
- jenkins 打安卓包 cpu使用过高处理操作
登录两个控制台 打包开始后 在其中一台机器执行ps -ef |grep jenkins 找到执行打包的主进程复制pid 在另一个终端上执行 top -H -p pid 将最耗cpu的线程id转换为16 ...
- BZOJ4556 HEOI2016/TJOI2016字符串 (后缀树+主席树)
二分答案后相当于判断一个区间的后缀与某个后缀的最长公共前缀是否能>=ans.建出后缀树,在上述问题中后者所在节点向上倍增的跳至len>=ans的最高点,然后相当于查询子树中是否有该区间的节 ...