python学习笔记(十六)之文件
打开文件用open函数
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Open file and return a stream. Raise IOError upon failure.
重点关注两个参数:
- file:要打开的文件的路径,可以绝对路径或相对路径
- mode:文件打开模式
| 打开模式 | 执行操作 |
| ‘r’ | 只读(默认模式) |
| 'w' | 只写,会覆盖已存在的文件 |
| 'x' | 如果文件已存在,用此模式打开将引发异常 |
| 'a' | 追加模式 |
| 'b' | 二进制模式 |
| 't' | 文本模式(默认情况) |
| '+' | 可读写模式(可添加到其他模式中使用) |
| 'u' | 通用换行符支持 |
open函数返回一个文件对象,常用的文件对象方法有:
| 文件对象方法 | 执行操作 |
| f.close() | 关闭文件 |
| f.read(size = -1) | 读取size个字符,未给定size或size未负,则读取所有字符 |
| f.readline() | 按行读取 |
| f.write(str) | 将str写入文件 |
| f.writelines(seq) | 向文件写入字符串序列seq,seq应是一个返回字符串的可迭代对象 |
| f.seek(offset, from) | 移动文件指针,从from(0代表文件头,1代表当前位置,2代表文件尾)偏移offser字节 |
| f.tell() | 返回当前文件指针位置 |
打开文件,默认情况是只读模式'r'和文本模式't'
>>> f = open('./test.txt')
读取文件,用read()方法,未指定size,则读取整个文件。
>>> f.read()
'江雪\n唐 柳宗元\n千山鸟飞绝,\n万径人踪灭。\n孤舟蓑笠翁,\n独钓寒江雪。'
读取文件后,文件指针指向文件尾,可以使用seek重新设置偏移量
>>> f.tell()
101
>>> f.seek(0,0)
0
>>> f.tell()
0
或者使用list()将文件转化为列表,或用for循环迭代读取。
>>> for i in f:
... print(i)
...
江雪 唐 柳宗元 千山鸟飞绝, 万径人踪灭。 孤舟蓑笠翁, 独钓寒江雪。
>>> lines = list(f)
>>> lines
['江雪\n', '唐 柳宗元\n', '千山鸟飞绝,\n', '万径人踪灭。\n', '孤舟蓑笠翁,\n', '独钓寒江雪。']
>>> for i in lines:
... print(i)
...
江雪 唐 柳宗元 千山鸟飞绝, 万径人踪灭。 孤舟蓑笠翁, 独钓寒江雪。
向文件写内容,用write()方法
>>> f = open('./test.txt', 'w')
>>> str1 = '''《静夜思》
...
... 床前明月光,疑是地上霜。
... 举头望明月,低头思故乡。
... '''
>>> f.write(str1)
37
>>> f.close()
>>> f = open('./test.txt')
>>> for i in f:
... print(i)
...
《静夜思》
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
python学习笔记(十六)之文件的更多相关文章
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记十六:读取JSON文件
读取JSON文件可以用JSON库,示例代码: #coding:utf-8 import json with open("msg.json") as jsonfile: json_d ...
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- Python学习笔记 -- 第六章 文件操作
I/O编程 在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这 ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python3.4学习笔记(十六) windows下面安装easy_install和pip教程
python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...
- Python学习笔记(六)
Python学习笔记(六) Ubuntu重置root密码 Ubuntu 16.4 目录结构 Ubuntu 命令讲解 1. Ubuntu重置root密码 启动系统,显示GRUB选择菜单(如果默认系统启动 ...
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- (C/C++学习笔记) 十六. 预处理
十六. 预处理 ● 关键字typeof 作用: 为一个已有的数据类型起一个或多个别名(alias), 从而增加了代码的可读性. typedef known_type_name new_type_nam ...
- python学习笔记(六)——程序调试
在我们平时编写程序时,常常会遇到各种错误,俗称BUG.而我们程序猿的工作常常需要对程序进行调试,也就是所谓的debug. 程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法 ...
随机推荐
- PAT 甲级 1027 Colors in Mars
https://pintia.cn/problem-sets/994805342720868352/problems/994805470349344768 People in Mars represe ...
- (转)用MongoDB 实现优酷API 缓存
由于众所周知的原因, 邪恶的企业优酷于九月的某一天开始禁止第三方播放器加载视频API, 我不得不设置一个反向代理来绕过Flash 的跨域限制. 自此服务器压力激增, 导致用户体验大为劣化. 为了减少服 ...
- mysql 中文字段排序
方法1)select * from mytable order by CONVERT(chineseColumnName USING gbk); (备注:chineseColumnName 位排序字 ...
- 运维堡垒机----Gateone
简介: 运维堡垒机的理念起源于跳板机.2000年左右,高端行业用户为了对运维人员的远程登录进行集中管理,会在机房里部署跳板机.跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上, ...
- solr服务器的查询过程
SolrDispatchFilter的作用 This filter looks at the incoming URL maps them to handlers defined in solrcon ...
- CODE FESTIVAL 2016 qualA Grid and Integers
划年代久远的水 题意 有一个R*C的棋盘,要求在每个格子上填一个非负数,使得对任意一个2*2的正方形区域,左上角和右下角的数字之和等于左下角和右上角的数字之和.有一些格子已经被填上了数字,问现在能否满 ...
- 【bzoj1004】[HNOI2008]Cards Burnside引理+背包dp
题目描述 用三种颜色染一个长度为 $n=Sr+Sb+Sg$ 序列,要求三种颜色分别有 $Sr,Sb,Sg$ 个.给出 $m$ 个置换,保证这 $m$ 个置换和置换 ${1,2,3,...,n\choo ...
- Testng 运行Cannot find class in classpath
用Testng运行多个class,结果报: org.testng.TestNGException: Cannot find class in classpath: Salesman at or ...
- BZOJ4881 线段游戏(二分图+树状数组/动态规划+线段树)
相当于将线段划分成两个集合使集合内线段不相交,并且可以发现线段相交等价于逆序对.也即要将原序列划分成两个单增序列.由dilworth定理,如果存在长度>=3的单减子序列,无解,可以先判掉. 这个 ...
- Luogu 4917 天守阁的地板(莫比乌斯反演+线性筛)
既然已经学傻了,这个题当然是上反演辣. 对于求积的式子,考虑把[gcd=1]放到指数上.一通套路后可以得到∏D∏d∏i∏j (ijd2)μ(d) (D=1~n,d|D,i,j=1~n/D). 冷静分析 ...