python常用读写文件函数
python打开文件
#文件打开方法
open(name,[,mode[buf]])
// name指定文件路径
// mode指定文件的打开方式,读写,还是只读
// buf指定缓冲区的大小
上面提到文件打开方式,有如下几种
mode | 说明 | 注意 |
---|---|---|
r | 只读方式打开 | 文件必须存在 |
w | 只写方式打开 | 文件不存在则创建文件,文件存在则清空文件内容 |
a | 追加方式打开 | 文件不存在则创建文件 |
r+/w+ | 读写方式打开 | $1 |
a+ | 追加和读写方式 | $1 |
rb,wb,ab,rb+,wb+,ab+ 二进制文件 |
python读取文件
read[size] // 读取文件,读取size字节
readline[size] // 读取一行
readlines[size] // 读取完默认缓冲buffer个字节数据,返回由每一行组成的列表
iter //使用迭代器读取文件
python写入文件
write(str) // 将字符串写入文件
writelines(str) // 写入多行文件,参数为可以迭代的对象
python读取文件
f = open('f:/people.xml') # 默认为只读
print type(f) # <type 'file'>
f.close()
可以看到,这里通过open打开的文件,赋值给f,此时f为file类型
f = open('f:/people.xml')
c = f.read() #使用read读取文件内容,赋值给c
print(c)
f.close()
此时正确的打印出了文件内容,结果如下:
下面我们分别测试上面三个读取文件的方法,此时我们需要读取的文件内容如下:
f = open('f:/hello.txt')
c = f.read(3)
print(c) # Hel
c = f.read(4)
print(c) # lo w
c = f.readline()
print(c) # orld!!
f.close()
f = open('f:/hello.txt')
c = f.readline()
print(c) # Hello world!!
c = f.readline(2)
print(c) # He
c = f.readline()
print(c) # llo world!!
f.close()
f = open('f:/hello.txt')
list_c = f.readlines()
print list_c
f.close()
可以看到,此时全部输出来了,其实readlines函数,默认有一个缓冲大小
import io
print io.DEFAULT_BUFFER_SIZE # 8192
使用迭代器读取文件
f = open('f:/hello.txt')
iter_f = iter(f)
lines = 0
for line in iter_f:
lines += 1
print lines
f.close()
python文件写入
f = open("f:/write.txt",'w')
f.write("hello hello")
f.close()
python写入文件到磁盘的时机
- 主动调用close或者flush方法,写缓存同步到磁盘
- 写入的数据量大于写缓存,写缓存同步到磁盘
python常见文件属性
f = open("f:/write.txt",'w')
print f.fileno() # 文件描述符
print f.mode # 文件权限
print f.encoding # 文件编码格式
print f.closed # 文件是否关闭
f.close()
python从标准输入读取
str = raw_input("Enter your input: ");
print("your input is :",str)
python文件命令行参数
import sys
if __name__ == "__main__":
print len(sys.argv)
for arg in sys.argv:
print arg
此时运行如下:
这里,我们可以根据传递进来的,同时可以根据当前传递的参数来做不同的处理
python编码格式
我们可以通过下面的方法,创建一个指定格式的编码文件:
open(fname,mode,encoding,errors,buffering)
f = codecs.open('test.txt','w','utf-8')
print f.encoding
f.close()
使用OS模块打开文件
os.open(filename, flag,[mode])
flag: 打开文件方式
os.O_CREATE 创建文件
os.O_RDONLY 只读方式打开
os.O_WRONLY 只写方式打开
os.O_RDWR 读写方式打开
os.read(fd, buffersize) #读取文件
os.write(fd, string) # 写入文件
os.lseek(fd, pos, how) # 文件指针操作
os.close(fd) # 关闭文件
import os
# 写入文件
fd = os.open('hello.txt',os.O_CREAT | os.O_RDWR)
n = os.write(fd, "hello world.........")
# 读取文件
l = os.lseek(fd, 0, os.SEEK_SET) # l表示当前指针位置
str = os.read(fd, 4)
print str # hell
os.close(fd)
OS模块常用方法
OS方法 | 说明 |
---|---|
access(path, mode) | 判断文件权限 |
listdir(path) | 返回当前目录下所有文件组成的列表 |
remove(path) | 删除文件 |
rename(old, new) | 修改文件或者目录名 |
remove(path) | 删除文件 |
mkdir(path) | 创建目录 |
mkdir(path) | 创建多级目录 |
removedirs(name) | 删除多级目录 |
rmdir(path) | 删除目录 |
OS.path模块常用方法
OS.path方法 | 说明 |
---|---|
exists(path) | 当前路径是否存在 |
isdir() | 是否是一个目录 |
isfile(path) | 是否是一个文件 |
getsize(filename) | 返回文件大小 |
dirname(p) | 返回路径的目录 |
basename(p) | 返回路径的文件名 |