python总结教程_python基础教程总结10——文件

1.打开文件

open(name[mode[,buffing])    参数:  文件,模式,缓冲

1)name: 是强制选项,模式和缓冲是可选的

#如果文件不在,会报下面错误

1 >>> f = open(r'D:\text.txt','r')2 Traceback (most recent call last):3 File "", line 1, in

4 IOError: [Errno 2] No such file or directory: 'D:\\text.txt'

2)文件模式

'r'读模式'w'写模式

’a'追加模式'b'二进制模式(可添加到其他模式中使用)

’+'读/写模式(可添加到其他模块中使用)

NOTE:

默认的方式,比如说open('filename')是读模式

r+, 则表示可读写

如果是二进制文件或图形文件,则必须用缓冲模式

普通的w模式会覆盖文件的内容,a模式则不会.

rb则可以用来读取二进制文件.

通过参数模式中使用U参数,能够在打开文件时使用通用的换行符支持模式,无论\r,\n\r,都会换成\n,而不用考虑运行的平台.

3)缓冲

0或者False: 无缓冲,所有操作直接针对硬盘

1或者True:  有缓冲,内存代替硬盘,速度快,只有close,flush才写入硬盘同步.

> 1  :  表示缓冲区的大小

-1    :  表示默认的缓冲区大小

2.文件方法

2.1 读写

#对空文件来说: 提供写时,会在已在字符串末尾追加,

1 >>> f = open('somefile.txt','w')2 >>> f.write('Hello,')3 >>> f.write('World!')4 >>>f.close()5 #somefile.txt文件内容

6 Hello,World!

#对于非空文件:提供w方法时,会覆盖文件中的内容

1 >>> f = open('somefile','w')2 >>> f.write('This is 1st line.\n')3 >>> f.write('This is 2nd line.')4 >>>f.close()5 #somefile.txt文件内容

6 This is1st line.7 This is 2nd line.

简单读取的例子:

1 >>> f = open('somefile.txt','r')2 >>> f.read(16)#先读取16个字符

3 'This is 1st line'

4 >>> f.read() #会读取剩下的内容,除非seek定位到0,重新读取

5 '.\nThis is 2nd line.'

6 >>> f.close()

2.2 管道输出

$ cat somefile.txt | python somescript.py | sort

#一个简单例子: 统计一个文本中单词的数量

$ cat somefile.txt

This is a book!

That is a dog!

Who are you?

脚本清单:

#somescript.py

import sys

text = sys.stdin.read() #读取所以输入

words = text.split() #分割字符串

print "Word Count:", len(words)

输出结果:

# cat somefile.txt | python somescript.py

Word Count: 11

2.3 读写行

readline : 读取行,包括换行符

readlines: 读取所有行

write: 写一行, 注意:没有writeline方法

writelines: 写多行

NOTE: 如何判断不同的行以什么结尾? os.linesep

#UNIX

>>> import os

>>> os.linesep

'\n'

#WINDOWS

>>> import os

>>> os.linesep

'\r\n'

2.4 基本文件方法

#测试文本somefile.txt

Welcome to this file

There is nothing here except

This stupid haiku

#首先读取指定字符 ——  f.read(n)

>>> f = open(r'd:\Learn\Python\somefile.txt')

>>> f.read(7)

'Welcome'

>>> f.read(4)

' to '

>>> f.close()

#其次读取所有的行—— f.read()

>>> f = open(r'd:\Learn\Python\somefile.txt','r')

>>> print f.read()

Welcome to this file

There is nothing here except

This stupid haiku

#接着是读取行 —— f.readline()

>>> f.close()

>>> f = open(r'd:\Learn\Python\somefile.txt')

>>> for i in range(3):

... print str(i) + ':' + f.readline()

...

0:Welcome to this file

1:There is nothing here except

2:This stupid haiku

#再读取所有行 ——  f.readlines()

>>> import pprint

>>> pprint.pprint(open('somefile.txt').readlines())

['Welcome to this file\n',

'There is nothing here except\n',

'This stupid haiku']

#下面是写文件—— f.write(' ......')

>>> f = open(r'somefile.txt','w')

>>> f.write('this\nis no\nhaiku')

>>> f.close()

运行文件后,内容如下:

this

is no

haiku

#最后是writelines—— f.writelines( ' ....' )

>>> f = open(r'somefile.txt')

>>> lines = f.readlines()

>>> f.close()

>>> lines[1] = "isn't a\n"

>>> f = open('somefile.txt','w')

>>> f.writelines(lines)

>>> f.close()

运行后,文件内容如下:

this

isn't a

haiku

2.5 关闭文件

时刻记得close()来关闭文件,这样做的目的:

安全考虑,防止文件因为某些原因崩溃,写不进数据

出于数据同步考虑,close(),才会往硬盘中写数据

出于效率的考虑,内存中的数据可清空一部分出来

为了确保程序结束时close(),可以用try/finally结合使用

# Open your file here

try:

# Write data to your file

finally:

file.close()

NOTE: 一般文件在close()之后才会写入硬盘,如果想不执行close()方法,又可以看到写入的内容,那么flush就派上用场了.

3.对文件内容迭代

3.1 按字节处理

def process(string):

print 'Processing...', string

f = open('somefile.txt')

while True:

char = f.read(1)

if not char:

break

process(char)

f.close()

3.2 按行处理

f = open(filename)

while True:

line = f.readline()

if not line:

break

process(line)

f.close()

3.3 读取所有内容

如果文件不是很大,可以用read(),或者readlines()读取的内容作为字符串来处理.

#用read来迭代每个字符

f = open(r'D:\Work\Python\somefile.txt')

for char in f.read():

process(char)

f.close()

#用readlines来迭代行

f = open(r'D:\Work\Python\somefile.txt','r')

for line in f.readlines():

process(line)

f.close()

3.4 使用fileinput懒惰型迭代

在需要对一个大文件进行迭代时,readlines会占用太多的内存。这个时候可以使用while循环和readline方法来替代。

import fileinput

def process(string):

print 'Processing...', string

for line in fileinput.input('somefile.txt'):

process(line)

3.5 文件迭代器

#Python中文件是可以迭代的

f = open('somefile.txt')

for line in f:

print line,

f.close()

#如果希望Python来完成关闭的动作,对文件进行迭代,而不使用变量存储变量,代码可以更加精简

for line in open('somefile.txt'):

print line,

#sys.stdin也是可以迭代的

import sys

for line in sys.stdin:

print line,

运行结果:

D:\Work\Python>python file.py

#输入下面两行

Hello,World!

Hello,Jerry!

^Z

#按下CTRL+Z键后,输入的内容,显示

Hello,World!

Hello,Jerry!

#可以对文件迭代器执行和普通迭代器相同的操作。比如将它们转换为字符串列表,这样所达到的效果和使用readlines一样.

>>> f = open('somefile.txt','w')

>>> f.write('First line\n')

>>> f.write('Second line\n')

>>> f.write('Third line\n')

>>> f.close()

>>> lines = list(open('somefile.txt'))

>>> lines

['First line\n', 'Second line\n', 'Third line\n']

>>> first,second,third = open('somefile.txt')

>>> first

'First line\n'

>>> second

'Second line\n'

>>> third

'Third line\n'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx的配置文件

目录 Nginx的配置文件 1.找到Nginx配置文件的位置 2.Nginx配置文件组成 第一部分:全局块 第二部分:events块 第三部分:http块 (1)http 全局块 (2)server 块 Nginx的配置文件 1.找到Ngin…

C++为什么空格无法输出_OOP 面向对象编程:由 C 到 C++

作者:鲸90830链接:https://www.cnblogs.com/whale90830/p/10488595.html由C到COOP第一课C语言的局限C的特点C的程序特征C程序的结构特性C程序的编辑、编译和运行⭐C对C的补充C语言的局限类型检查机制相对较弱,使得程序中的一些错误不能在编译…

python获取钉钉日志数据_python3实现zabbix告警推送钉钉的示例

自己写了一个简单的python脚本,用来推送zabbix告警到钉钉机器人,推送格式为markdown,有需要的可以自己修改markdown的格式及推送的值(zabbix宏)环境如下,理论上zabbix版本不影响,可以看看官方宏定义是否有区别python 3…

idea无法导入主题jar包_总结IDEA开发的26个常用设置

IDEA 软件设置Settings页面Settings是对软件本身的一些属性进行配置,例如字体 主题 背景图 插件等。如何打开Settings设置页面Settings设置页面结构详解结构Appearance & Behavior 外观和行为Keymap 快捷键Editor 编辑器设置Plugins 插件Version Control 版本控…

Nginx的配置实例(反向代理准备工作)

目录 反向代理准备工作 1.实现效果 2.准备工作 (1)在 Linux 系统中安装 tomcat 服务器,使用默认端口号 (2)设置对外开放访问的 端口号 (3)测试:在 windows 系统中通过浏览器访…

交叉线和直通线各自用于什么场合?为什么?_【小麓讲堂】偏振光与LCD、OLED、3D、AR到底有什么关系?...

你了解自然界物体反射的光与电子显示设备发出的光有什么区别吗?你知道LCD、OLED、3D、AR的工作原理吗?你清楚偏振光与它们的关系吗?今天我们就跟大家聊一聊偏振光与多媒体显示设备的关系。人们常说眼睛是心灵的窗户,其实眼睛不单是…

php多个表中查找数据_Excel实战技巧74: 在工作表中创建搜索框来查找数据

学习Excel技术,关注微信公众号:excelperfect本文主要讲解如何创建一个外观漂亮的搜索框,通过它可以筛选数据并显示搜索结果。如下图1所示,在数据区域上方放置有一个文本框,用来输入要搜索的文本,其名称重命…

Nginx的配置实例(反向代理实例 )

目录 反向代理实例 1.实现效果 2.准备工作 (1)准备两个服务器,一个8080端口,一个 8081端口 (2)创建文件夹和测试页面 3.反向代理具体配置 (1)找到 nginx 配置文件&#xff0…

多因素方差分析中预测因素的筛多_用回归来理解方差分析(二):两因素方差分析...

1 两因素方差分析的形式多因素方差分析针对的是多因素完全随机设计。包含两个及以上的自变量,为便于讲解,本文以两因素方差分析为例。在一个两因素完全随机设计中,自变量包含,共个水平。自变量包含,共个水平。总共形成…

python in memory_使用 in_memory 工作空间的注意事项

来自:https://pro.arcgis.com/zh-cn/pro-app/tool-reference/appendices/using-the-in-memory-output-workspace.htm使用 in_memory 工作空间的注意事项ArcGIS 应用程序、ArcGIS Pro、ArcMap 和 ArcGIS Server 均具有基于内存的工作空间,即 in_memory 工…

Spring框架概述(快速入门)

Spring 框架概述: 目录 Spring 框架概述: 1.Spring 是轻量级的开源的 javaEE 框架 2.Spring 有两个核心部分:IOC 和 AOP: 3.Spirng 特点: 4.Spring 的下载 5.接下来,通过一个小例子来掌握spring入门…

初学者怎么自学python编程_怎样自学python编程?从零开始学习python,400集免费教程!...

作为小白,在学习Python的时候,必然会走一定的弯路,有人在弯路上走丢了,有人走出了弯路。我就是属于还未走出弯路的同学,所以我想谈谈我的Python学习之路。 01先了解一下什么是python‍? Python 是一种通用的…

工具用途_小工具大用途:万能扳手、开瓶器、开箱器,DIY16种用法,玩过吗

小工具大用途,用法1:轻松开瓶盖小工具大用途,用法2:一字螺丝刀,拧螺丝很轻松小工具大用途,用法3:十字螺丝刀,轻松拧螺丝小工具大用途,用法4:轻松撬罐头盖小工…

IOC容器(底层原理解读)

IOC的概念和原理 目录 IOC的概念和原理 1.什么是IOC (1)控制反转: (2)使用IOC的目的:降低耦合度 (3)IOC解耦过程图解 2.IOC的底层原理 3.IOC接口 (1&#xff09…

python怎么画图片 wafer map_Python wafer_map包_程序模块 - PyPI - Python中文网

晶圆图 绘制一张晶圆图。用于半导体加工和分析。 内容安装 用法键盘快捷键和鼠标用法rel"nofollow">键盘快捷键和鼠标用法 注意事项当前能力 更改日志 功能鼠标和键盘快捷键! 知道半M1-0302晶圆尺寸! 你可以改变颜色! 放大缩小&…

IOC操作Bean管理XML方式(创建对象和set注入属性)

目录 1.什么是 Bean 管理: (1)通过 Spring 创建对象 (2)通过 Spring 注入属性 2.IOC 操作 Bean 管理有两种方式: (1)基于 xml 配置文件方式实现 (1.1)基…

c# 结构体 4字节对齐_【专题4:平时遇到的问题】 之 【3.由结构体字节对齐引发的通信故障】...

希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路....原创不易,文章会持续更新,感谢您的关注1.问题由来MCU给上位机发送的一帧数据中,总是多一个…

android 全局hook_【Hook】实现无清单启动Activity

引子Hook技术在android开发领域算是一项黑科技,那么一个新的概念进入视线,我们最关心的3个问题就是,它是什么,有什么用,怎么用本系列将由浅入深 手把手讲解这三大问题。本文是第三篇, 高级篇。前面两篇Hook…

IOC操作Bean管理XML方式(有参构造注入属性)

IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 &a…

python3调用java_Python3-JPype调用Java代码

原博文 2019-12-31 10:54 − ## JPype调用Java代码 ### 安装所需要的库 python pip install JPype1-py3### 准备一个jar包 #### java工程目录 ![](https://img2018.cnblogs.com/blog/1895590/201912/18955... 相关推荐 2019-12-06 14:59 − 近期在Python中使用java语言的时候有…