python中的文件
Python文件
1、 概述
文件对象不仅可以用来访问普通的磁盘文件,也可以访问任何其他类型抽象层面上的文件。
内建函数open()以及file()提供了初始化输入输出(I/O)操作的通用接口。Open()内建函数成功打开文件之后会返回一个文件对象,否则引发一个错误,当操作失败的时候,会出现一个IOError的异常,基本语法如下:
File_object = open(file_name,access_mode=’r’,buffering=-1)
文件名称file_name可以是绝对路径或者是相对路径,access_mode是一个字符串,表示为文件打开的模式,经常使用的模式有r,w,a,分别表示为读取,写入,追加,还有一个U模式,表示为通用换行符的支持。
在默认情况下,如果没有使用access_mode参数,那么默认为只读的,在使用w的时候,若文件存在,那么先清空,然后创建,在使用各种模式的时候,二进制读写的b不能作为开头。
在open()和file()方法中,open是file的别名,两者是完全相同的。
通用换行符的支持,UNS,在不同的平台中,使用不通的符号来表示行结束,例如\n,\r\n或者\r,
在使用换行符的时候,只对读取的时候有作用,在输入的时候必须进行自己进行处理。
2、 文件的内建方法
Open()成功执行并返回一个文件对象之后,所有对该文件的后续操作都将通过这个“句柄”进行,文件方法可以分成四类:输入,输出,文件内移动,以及杂项操作。
2.1 输入
Read()方法用来直接读取字节到字符串,最多读取给定数目个字节,如果没有给定size参数或者size为负值,文件将被读取至末尾。
Readline()方法读取打开文件的一行,然后整行,包括行结束符,作为字符串返回。
Readlines()方法会读取所有的行并将它们作为一个字符串列表返回,可选参数ssize个字节。
2.2 输出
Write()方法将含有文本数据或二进制数据库的字符串写入到文件中。
Writelines()方法是针对列表的操作,接收一个字符串列表作为参数,然后将它们写入文件,但是在写入的时候,换行符并不会被自动加入,所以在每次处理的时候,必须手动的给每行的结尾加上行结束符。
保留分隔符:注意,在使用输入方法read()和readlines()方法从文件中读取行的时候,python并不会删除行结束符的操作,从而会出现以下代码:
|
>>> f = open("kel") >>> data = [line.strip() for line in f.readlines()] >>> f.close() >>> data ['this is the test', 'this is the one line', 'this is the second line', 'how old are you', 'this is off your old', 'how weight are you', 'how height are you'] |
2.3 文件内移动
在文件内移动的时候,使用的方法为seek(),表示移动多少个字节,显示当前位置,可以使用tell()。在移动未知的时候,seek(number,whence),参数number表示移动的字节数,参数whence只有三个值,分别为0,1,2,分别表示为文件开头,文件当前未知算起,文件末尾。
2.4 文件的迭代
一行一行的访问文件很简单,如下:
|
>>> f = open("kel") >>> for line in f: ... print line, ... |
在这个循环里,line表示一个文件的一行,包括末尾的行结束符。
也可以使用下面的方法:
|
>>> f = open("kel") >>> for line in f.readlines(): ... print line, ... |
2.5 其他
Close()方法表示关闭文件,在每次打开文件之后,记得调用colse方法来关闭文件。
Truncate()方法表示将文件清空,如果具有参数size,那么就会truncate到size个字节
Flush()方法表示直接把内存缓冲区数据l立刻写入到文件,而不是被动的等待输出缓冲区被写入。
2.6 文件方法杂项
重写输出所有行的例子如下:
|
>>> f = open("kel") >>> allLines = f.readlines() >>> f.close() >>> for eachLine in allLines: ... print eachLine, |
在这里所需要注意的是,先是将所有的内容全部读出,然后关闭文件之后,再来进行处理,这种方法的不好之处在于,如果文件过大,那么还是每次进行输出一行进行操作。
|
>>> f = open("kel") >>> for eachLine in f : ... print eachLine, |
行分隔符在操作系统中的显示差异,在POSIX系统中,换行符为\n,在windows系统中使用了\r\n,在macos中使用\r,如果要想跨平台,那么可以使用os模块中的属性。
|
Os模块属性 |
描述 |
|
Linesep |
用于在文件中分割行的字符串 |
|
Sep |
用来分割文件路径名的字符串 |
|
Pathsep |
用于分割文件路径的字符串 |
|
Curdir |
当前工作目录的字符串名称 |
|
Pardir |
父目录字符串名称 |
不管使用什么平台,只要导入了os模块,那么这些变量自动设置为正确的值。
在print语句中,会默认在输出内容末尾后添加一个换行符,从而在每次使用print的时候,添加一个逗号即可,在readline和readlines方法中不对行里的空白字符做任何处理。
下面的脚本主要是用来输入一些语句,然后保存在文件中,当输入为点的时候,退出,在这里使用了os.linesep从而添加上正确的换行符号。
|
#!/usr/bin/env python import os filename = raw_input("Enter file name:") fobj = open(filename,"w") while True: aLine =raw_input("Enter a line('.'is to quit):") if aLine == ".": break else: fobj.write("%s%s" %(aLine,os.linesep)) fobj.close() |
下面是关于seek和tell的例子,需要注意的是,在遍历的时候,光标是移动的,注意处理光标的位置:
|
#!/usr/bin/env python f = open("kel") print f.tell() print f.readline() print f.tell() f.seek(20) print f.readline() print f.tell() f.close() |
核心模块os和os.path,这两个模块提供了访问计算机文件系统的不同方法。
python中的文件的更多相关文章
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- python中对文件、文件夹,目录的基本操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...
- python中 对文件的读写操作 以及如何边写入 边保存flush()
转自:https://blog.csdn.net/t8116189520/article/details/78854708 首先 python中打开文件大致常用的几类如下: 1.写入文件write # ...
- linux命令(28):Linux下SCP无需输入密码传输文件,python 中scp文件
python 中scp文件:(如果下面的发送免密码已经完成的话,就直接能用下面这个) os.system('scp "%s" "%s:%s"' % (" ...
- [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明
转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- python中对文件、文件夹的操作
python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt") 创建空文件 2) open(&qu ...
- python学习之【第十一篇】:Python中的文件操作
1.前言 在Python中,对文件的操作主要遵循以下流程: 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 2.打开文件 使用open函数,可以打开一个已经存在的文件,或 ...
- 【Python】解析Python中的文件操作
目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...
- Python中对 文件 的各种骚操作
Python中对 文件 的各种骚操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getc ...
随机推荐
- linux环境下,利用tc限制两台服务器间的网速,非常简单。
最近再搞postgres的数据同步,需要模拟异地机房有带宽限制时的同步效果,所以想要限制一下两台机器之间的网速. ts命令功能很强,同时也好难理解和使用,经常浪费了好半天还是搞不定. 这里分享一个简单 ...
- HDU 4634 Swipe Bo 状态压缩+BFS最短路
将起始点.终点和钥匙统一编号,预处理: 1.起始点到所有钥匙+终点的最短路 2.所有钥匙之间两两的最短路 3.所有钥匙到终点的最短路 将起始点和所有钥匙四方向出发设为起点BFS一遍,求出它到任意点任意 ...
- 将SQL Azure数据库备份到本地SQL Server 2012
整个备份过程可以分为如下两大步骤进行: 一.通过“Export Data-tier Application”先将目标SQL Azure的数据库备份到本地,详细步骤如下: 1.启动SQL Server ...
- SSO之CAS单点登录详细搭建教程
本教程是我个人编写,花费几个小时的时间,给需要学习的人员学习使用,希望能帮助到你们. [环境说明]:本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下: windows7 ...
- BZOJ 1041 圆上的整点
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1041 题意:求圆x^2+y^2=r^2上的整点. 思路:由于对称性,我们只需要计算第一象 ...
- leetcode:Rectangle Area
Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...
- 《OD学hadoop》第一周0625
一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统 www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1- ...
- Qt之QHostInfo
简述 QHostInfo 类为主机名查找提供了静态函数. QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址,或者与一个IP地址相关联的主机名.这个类提供了两个 ...
- LA 3177 长城守卫
n为偶数的时候比较简单,就是相邻两个守卫的礼物和的最大值. 首先这是个下限,其次这个值也满足题目要求,所以这就是答案了. 当n为奇数的时候上限是守卫索要礼物的最大值的三倍. 这也很容易理解,比如n=5 ...
- 【原创】牛顿法和拟牛顿法 -- BFGS, L-BFGS, OWL-QN
数据.特征和数值优化算法是机器学习的核心,而牛顿法及其改良(拟牛顿法)是机器最常用的一类数字优化算法,今天就从牛顿法开始,介绍几个拟牛顿法算法.本博文只介绍算法的思想,具体的数学推导过程不做介绍. 1 ...