python(open文件读取)
一.open文件读取
1.open('file','mode')打开一个文件
- file 要打开的文件名,需加路径(除非是在当前目录)
- mode 文件打开的模式
- 需要手动关闭close
2.with open('file','mode')as...
- 不需要手动关闭文件
3.'r': 以只读模式打开(默认)(必须保证文件存在)
- 文件名中出现汉字时,需在括号内加 u 就不会出现报错IOError
file1 = open("D:\新方硕.txt","r") print (file1.read()) file1.close() file1 = open(u"D:\新方硕.txt","r") #文件内中文为手动输入,则需转码 print (file1.read().decode('gbk').encode('utf-8')) file1.close()
- read(size) 读取所有
- 返回字符串
- 括号接读取 size 字节
#read()不传参数时默认读取所有 file1 = open(u"D:\新方硕.txt","r") print (file1.read()) file1.close() #read(3)括号内参数3代表字节数,一个汉字3个字节 file1 = open(u"D:\新方硕.txt","r") print (file1.read(3)) file1.close()
- readline()默认读取一行
- 返回字符串
- 括号内填了子节数,则按字节读取
#readline()默认读取一行 file1 = open(u"D:\新方硕.txt","r") print (file1.readline()) file1.close() #readline(size)括号内填了子节数,则按字节读取 file1 = open(u"D:\新方硕.txt","r") print (file1.readline(5)) file1.close()
- readlines()读取所有
- 返回列表
file1 = open(u"D:\新方硕.txt","r") print (str(file1.readlines()).decode('string_escape'))
with open('d:\\test1.txt','r') as file1: for i in file1.readlines(): print (i)
#coding=utf-8 file1 = open(u"D:\\学习.txt") for i in file1.readlines(): print (i.splitlines()[0]) file1.close()
- 返回列表
备注:
- 调用
read()
会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)
方法,每次最多读取size个字节的内容。另外,调用readline()
可以每次读取一行内容,调用readlines()
一次读取所有内容并按行返回list
。因此,要根据需要决定怎么调用。 - 如果文件很小,
read()
一次性读取最方便;如果不能确定文件大小,反复调用read(size)
比较保险;如果是配置文件,调用readlines()
最方便。
4.'w':以只写模式打开
- 若文件存在,则会自动清空文件,然后重新创建。
- 若文件不存在,则新建文件。
- 使用这个模式必须要保证文件所在目录存在,文件可以不存在。
file1 = open("D:\\xfs.txt","w") file1.write("I am python!") file1.close()
#将test文件内容复制到test1中 file1 = open('d:\\test.txt','r') file2 = open('d:\\test1.txt','w') file3 = file2.write(file1.read()) file1.close() file2.close()
with open('d:\\test.txt','w') as file1: file2 = file1.write('缘分一道桥\n歌词\n男:\n秦时明月汉时关\n万里长征人未还\n但使龙城飞将在\n不教胡马度阴山\n女:\n狼烟千里乱葬岗\n' '乱世孤魂无人访\n无言苍天笔墨寒\n笔刀春秋以血偿\n男:\n谈爱恨 不能潦草\n战鼓敲啊敲\n用信任 立下誓言我来熬\n' '女:\n这缘份 像一道桥\n旌旗飘啊飘\n你想走就请立马抽刀爱一笔勾销\n合:\n谈爱恨 不能潦草\n红尘烧啊烧\n以生死 ' '无愧证明谁重要\n女:\n这缘份 像一道桥\n故事瞧一瞧\n男:\n走天涯你我卸下战袍\n合:\n梦回长城谣')
- 该模式下不能使用 read*()方法。
#报错IOError: File not open for reading file1 = open("D:\\xfs.txt","w") file1.write("I am python!") print (file1.read())
5.'a':以追加模式打开
- 若文件存在,则会追加到文件的末尾。
- 若文件不存在,则新建文件。
- 该模式不能使用 read*()方法。
file1 = open("D:\\xfs.txt","a") file1.write("我爱HTML") file1.close()
6.seek()指针从哪里开始写入
file.seek(offset[, whence])
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
#表示从第三个子节后开始读取 file1 = open(u"D:\\新方硕.txt","r") file1.seek(3) print (file1.read(3)) file1.close()
data = open("d:\\test.txt","r") data.seek(-15,2) print (data.read()) data.close()
7.'r+': 以文本读写模式打开
- 可以写到文件任何位置。
- 默认写的指针开始指在文件开头, 因此会覆写。
- 可以使用 read*()。
file1 = open(u"D:\\新方硕.txt","r+") file1.seek(3) file1.write("HTML") file1.close() #默认从第一个子节开始覆写 file1 = open(u"D:\\新方硕.txt","r+") file1.seek(3) file1.write("HTML") file1.close()
- 可以使用 read*()
- 可以使用 read*()
python(open文件读取)的更多相关文章
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
- python大文件读取
python大文件读取 https://stackoverflow.com/questions/8009882/how-to-read-a-large-file-line-by-line-in-pyt ...
- python .dcm文件读取,并转化为.jpg格式
.dcm文件是DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信中记录医学图像和相关信息的文件,在用于医学图像处理的时候我们 ...
- Python txt文件读取写入字典的方法(json、eval)
link:https://blog.csdn.net/li532331251/article/details/78203438 一.使用json转换方法 1.字典写入txt import json d ...
- python tips:文件读取——换行符的问题
问题:在windows系统中,换行的符号是'\r\n'.python在读文件的时候为了系统兼容,会默认把'\r','n','\r\n'都视作换行.但是在windows文件中,可能在同一行中同时存在'\ ...
- python应用文件读取写登录注册
#!/usr/bin/python3# -*- coding: utf-8 -*-# Author: zhw#读取文件中的内容def open_file(filename ,file_type , * ...
- 用python实现文件读取和内容替换
infile = open("D:/test.txt", "r") #打开文件 outfile = open("D:/pp2.txt", & ...
- [Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题
最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下 ...
- python 大文件以行为单位读取方式比对
http://www.cnblogs.com/aicro/p/3371986.html 先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如 ...
- python中逐行读取文件的最佳方式_Drupal_新浪博客
python中逐行读取文件的最佳方式_Drupal_新浪博客 python中逐行读取文件的最佳方式 (2010-08-18 15:59:28) 转载▼ 标签: python ...
随机推荐
- idea搭建简单ssm框架的最详细教程(新)
为开发一个测试程序,特搭建一个简单的ssm框架,因为网上看到很多都是比较老旧的教程,很多包都不能用了,eclipes搭建并且其中还附带了很多的其他东西,所以特此记录一下mac中idea搭建过程. 另: ...
- UltraEdit 的“查看方式”着色类项型
UltraEdit 的“查看方式”着色类项型 2011年06月22日 13:16:00 cnki_ok 阅读数 5722 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请 ...
- chartjs
chartjs是一个图表控件集合,使用html5的canvas进行绘制. 官网:http://www.chartjs.org/ 文档:https://www.chartjs.org/docs/late ...
- Java12新特性 -- JVM 常量 API
Java 12 中引入 JVM 常量 API,用来更容易地对关键类文件 (key class-file) 和运行时构件(artefact)的名义描述 (nominal description) 进行建 ...
- 001-mac搭建Python开发环境、Anaconda、zsh兼容
一.概述 mac下搭建python环境推荐使用Anaconda+Pycharm. 1.1.Anaconda Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学.机器 ...
- EasyDSS高性能RTMP/FLV/HLS(m3u8)/RTSP流媒体服务器技术的HTTP QueryString URL的C++实现方案
EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如 http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...
- EasyNVR智能云终端硬件盒子x86版自我维护之摄像机网页直播系统基础运维
背景分析 随着EasyNVR软件为越来越多的用户接受和使用,我们也致力于用户的需求收集和需求的调研,发现一部分用户有关于硬件设备的需求,加之我们推出的免费产品EasyNVS云管理平台,可以说用户自己搭 ...
- 改进初学者的PID-测量的比例介绍
最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助.作者Brett Beaure ...
- 【python基础】argparse模块
参考 1. argumentparser-objects: 2. argparse.ArgumentParser()用法解析:
- 高级UI-画笔Paint
在UI这一块,谈到自定义,就离不开画笔和画布的使用话题,在自定义控件的时候,为了做出炫酷的效果,我们往往会使用画笔和画布,那么这里我们就先来看看画笔的使用吧 简单使用例子 自定义一个View publ ...