python文件操作
来源:互联网 发布:dnf数据芯片要刷全图吗 编辑:程序博客网 时间:2024/05/24 03:21
python文件操作
说明:适用python2
1. 文件打开与关闭
函数
open()close()
函数说明及使用
格式:open(name[, mode[, buffering]]) -> file object 参数: name: file name mode: r 只读方式打开文件,如果文件不存在,报错。默认参数。 w 只写方式打开文件,如果原文件存在,则原文件的内容清空;若原文件不存在,新建立一个。 a 写入的内容追加到文件末尾。 b 二进制方式操作文件 r+ 读写方式打开文件。若写入行数少于原文件行数,会造成前面的为写入的新行,后面的为原来的内容。若文件不存在,报错。 w+ 读写方式打开文件。会清掉原文件内容。若文件不存在,创建新文件
文件打开实例
\#常规示例f = open("a.txt", "r")print f.read()f.close()注: 文件打开后一定要调用close关闭
下面是两种打开文件的常用方式。第一种方式,即使文件操作出现错误,使用try…finall也可以关闭文件。另外python引入了with语句,可以自动地调用close方法。
\# 常用方式一try: f = open("a.txt", "r") print f.read()finally: if f: f.close()\# 常用方式二:with open("a.txt", "r") as f: print f.read()
易出错操作
这个会使读到的文件内容出现乱码,而且原始文件也会破坏掉。
f=open('a.txt','a+') f.write('123') f.read() f.close()
a+方式追加文件,文件的指针在文件末尾,再读取文件操作时,会一直向后读取,直到碰到EOF为止。
详细见: http://blog.csdn.net/ztf312/article/details/47259805
2.读文件内容
函数
"""下面中的三个函数都含有size参数,但是一般不使用"""read([size]) -> read at most size bytes, returned as a string.readline([size]) -> next line from the file, as a string.readlines([size]) -> list of strings, each a line from the file.xreadlines() -> returns self.
read([size])
- 参数:size:如果这个参数不写或者值为负值,那么会一直读文件,直到文件的EOF标志。也就是说会把文件的内容都读进来,但是如果文件的内容大于内存,则不会读进去数据。
- 返回值:字符串(str)
a.txt的文件内容为(下面例子中a.txt保持为这个内容):
line1line2
#常用于读取整个文件内容with open("a.txt", "r") as f: print f.read() #读取文件全部内容并打印
也可以指定读取指定个数的字符
with open("a.txt", "r") as f: i = f.read(9) print i+"-01" i = f.read(9) print i+"-02" i = f.read(9) print i+"-03" i = f.read(9) print i+"-04""""输出为:line1lin-01e2-02-03-04"""
从指定读取个数字符的输出来看,
- 第一次读取9个字符,包含’\n’字符。
- 第二次读取时,由于不足9个字符,那么只读取剩下的几个字符。
- 第三次,第四次读取,其实返回的都是EOF。
readline([size])
参数:可选,指定读入的字节数。这个参数一般不用。如果省略这个参数,是指读一整行数据,包括换行符
返回值:str,包含换行符
with open("a.txt", "r") as f: i = f.readline() print i+"-01""""输出为:line1-01"""
使用size参数
with open("a.txt", "r") as f: i = f.readline(2) print i+"-01" i = f.readline(9) print i+"-02""""a.txt的内容同上。输出的结果为:li-01ne1-02"""
分析:a每行的长度为6(包含换行符)。在指定2参数时,输出了第一行的前两个字符。在第二次调用,指定参数等于9时,从刚才的位置继承读取,但是并没有读到第二行,也就是说读到了换行符就结束了。因此,如果指定的数字大于行的长度,那么也会读一整行的内容。
readlines([size])
返回:一个字符串的list
print "start"with open("a.txt") as file: print file.readlines()print "end""""输出为:start['line1\n', 'line2']end"""
如果指定了size的大小,那么在调用 readlines(size) 函数,会返回大约size字节的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 size指定的值大一点(除最后一次调用 readlines(size) 函数的时候)。通常情况下,Python 会自动将用户指定的 size的值调整成内部缓存大小的整数倍。
例如,我的机器上的缓存大小是8k,而a.txt的只有11个字符(算是换行符),因此,指定参数的话指定1后者2或者3,其实效果都是一样的,只有在读到大的文件的时候才会看到效果,这里不举例子了。
循环读文件内容
对file对象操作
在Python 2.2以后,我们可以直接对一个file对象使用for循环读每行数据
print "start"file = open("a.txt")num = 0for line in file: num += 1 print line + "-" + str(num) #do somethingfile.close()print "end""""输出为:startline1-1line2-2end"""
分析:读入的每行内容是带有换行符的,因此第一行(“line1”)的”-1”在下一行显示,第二行(“line2”)由于不带有换行符,因此显示为”line2-2”。
更常用的使用方式一般用方法strip去掉末尾的换行符:
print "start"file = open("a.txt")num = 0for line in file: num += 1 line = line.strip('\n') print line + "-" + str(num) #do somethingprint "end""""startline1-1line2-2end"""
通过readlines()进行操作
print "start"with open("a.txt") as file: lines = file.readlines() for line in lines: line = line.strip('\n') print lineprint "end""""输出:startline1line2end"""
使用readline进行
这种方法写起来比较麻烦,
print "start"with open("a.txt") as file: while 1: line = file.readline() if not line: break line = line.strip('\n') print line # do somethingprint "end"
带缓存的文件的读取
在读取大文件时,可以指定readline或者readlines的参数,就可以不断地读取文件了
print "start"with open("a.txt") as file: while 1: line = file.readlines(10) if not line: break line = line.strip('\n') print line # do somethingprint "end"
3.写文件内容
函数
write(str) -> None. Write string str to file.writelines(sequence_of_strings) -> None. Write the strings to the file.
4.其他操作
函数
seek(offset[, whence]) -> None. Move to new file position.tell() -> current file position, an integer (may be a long integer).flush() -> None. Flush the internal I/O buffer.x.next() -> the next value, or raise StopIteration
- Python 文件操作常用操作
- [python]python操作xml文件
- Python文件操作
- python文件目录操作
- Python文件操作
- Python文件操作
- python 文件操作
- python 文件操作
- Python 文件操作
- python 文件操作
- Python文件操作
- python 文件读写操作
- Python文件读写操作
- python文件目录操作
- Python的文件操作
- python常见文件操作
- python - 文件操作
- python文件操作
- Java hashcode 和getClass
- C++ 判断一个 字符串是不是 json 字符串
- [BZOJ1012][JSOI2008]最大数maxnumber-单调栈
- DataBinding的简单使用
- HDU 6118 度度熊的交易计划(最小费用最大流模板)
- python文件操作
- 我的BIOS之行(5)-UEFI的世界观
- Mac Gemymotion2.8 破解版免费版安装使用
- 图像处理28:轮廓
- Python基础
- 练习_test2
- [多校补题]2017 Multi-University Training Contest 7 solutions BY 杭州二中
- 练习_test3
- 将博客搬至CSDN