打开文件,当前目录
help(file)
方法
.close() 关闭文件。关闭后文件不能再进行读写操作。
.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
.next() 返回文件下一行
.read([size]) 从文件读取指定的字节数,如果未给定或为负则读取所有
.readline([size]) 读取整行,包括 "\n" 字符。
.readlines([sizehint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。
.seek(offset[, whence]) 设置文件当前位置
.tell() 返回文件当前位置
.truncate([size]) 截取文件,截取的字节通过size指定,默认为当前文件位置。
.write(str) 将字符串写入文件,没有返回值。
.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
数据类型描述
file.closed 返回true如果文件已被关闭,否则返回false。
file.encoding 文件编码
file.errors
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.newlines
file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
文件写入
file(‘test.txt‘,‘w‘)
r 只读模式,文件存在时才行,默认模式
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式
r+ 打开一个文件用于读写。文件指针将会放在文件的开头
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
w 写入,新创建test.txt文件, 有文件时会覆盖文件,
a 追加
+ 读和写
>>> file(‘test.txt‘,‘w‘)
<open file ‘test.txt‘, mode ‘w‘ at 0x0000000002E24150> ##文件存在内存中
>>> f = file(‘test.txt‘,‘w‘)
>>> f.write("first test") ##写入内容
>>> f.write("aaa")
>>>f.flush() ##刷新写入,保存在硬盘
>>>f.close() ##文件退出,保存在硬盘
退出后无法f.write(),
如果再 以 w 模式打开
f = file(‘test.txt‘,‘w‘)
f.write("add test2")
f.close() 原文件内容会被覆盖,
所以追加内容用模式
f = file(‘test.txt‘,‘a‘)
将列表写入
f = open("test.txt", "wb")
f.writelines([‘first test\n‘, ‘123\n‘, ‘aaa‘])
f.close()
打开文件,与文件属性
open
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开一个文件
f = open("f.txt", "wb")
print "文件名: ", f.name
print "是否已关闭 : ", f.closed
print "访问模式 : ", f.mode
print "末尾是否强制加空格 : ", f.softspace
condecs 避免格式问题打开文件乱码(推荐)
>>> import codecs
>>> f = codecs.open(‘test.txt‘,‘a‘,‘utf-8‘)
>>> f.write(‘test‘)
>>> f.close()
读文件
f.readline() 读行
>>>f = file(‘test.txt‘) ###不带模式,默认是 r 只读模式
>>>f.read() 读所有内容,打印所有内容
f.read() 之后 执行 f.readline() 会显示空值,因为f.read() 后指针默认是在跳到内容最末尾,
>>>f.tell() ##可以查看指针位置,
>>>f.seek(0) ##指针跳到0个字符,即行首,指定跳到那个位置
>>>f.readline() ###读出所有内容,打印第一行,再执行打印第二行
>>>f.seek(0)
>>>f.readlines() ##读取所有行并返回列表
>>>[‘first test\n‘, ‘123\n‘, ‘aaa‘]
f.xreadlines() ##对于很大的文件时使用,读单行,速度快占内存小
with ...as 语法使用,enumerate() 使用
import codecs
with codecs open(‘test.txt‘,‘rb‘) as f:
print (f.read())
for line, value in enumerate(f): ##每行都打印行号
print(line, value)
if line == 4-1: ##打印行号
print (value)
with ...as避免忘记f.close(),又可以避免文件乱码
linecache 取某行内容
import linecache
conut = linecache.getline(test.txt,4)
print(count)
文件内容替换
for line in fileinput.input("filepath",inplace=1):
line = line.replace("oldtext","newtext")
print line, ###不写,文件可能被清空
inplace=0 默认=0 只打印修改,=1 修改文件
backup= ‘ .bak‘ 修改前备份源文件,添加.bak后缀
python文件处理
原文:http://www.cnblogs.com/song-liang/p/7745767.html