1.open()
函数原型 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True,opener=None)
参数
(1)file
指定一个将要打开的文件的路径
(2)mode
r:读取(默认)。
w:写入。如果该文件已存在则截断清空文件(即覆盖)。
a:追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,则创建新文件写入。
x:排他性创建文件(如果文件已存在则打开失败)。
b:二进制格式。
t:文本模式(默认)。
+:更新文件(读取和写入)。
2.文件对象的方法
(1)f.write(text,/):将字符串写到文件对象中,并返回写入的字符数量(字符串的长度)
f = open("File.txt", "w")
print(f.write("Hello World."))
## 12
#File.txt
Hello World.
(2)f.writelines(lines,/):将一系列字符串写入到文件对象中(不会自动添加换行符)
f = open("File.txt", "w")
f.writelines(["I love Python.\n", "I love Cloud!"])
f.close()
#File.txt
I love Python.
I love Cloud!
(3)f.readable():判断该文件对象是否支持读取(如果返回值为False,则调用read()方法会导致OSError异常)
(4)f.writable():判断该文件对象是否支持写入(如果返回值为False,则调用write()方法会导致OSError异常)
f = open('File.txt', "r+")
print(f.readable())
## True
print(f.writable())
## True
文件可以通过迭代来实现读取:
f = open('File.txt', "r+")
for each in f:
print(each)
## I love Python.
##
## I love Cloud!
(5)f.tell():返回当前文件指针在文件对象中的位置
f = open('File.txt', "r+")
for each in f:
print(each)
print(f.tell())
## I love Python.
##
## I love Cloud!
## 29
# 通过移动文件指针迭代读取文件,此时文件指针已到达文件末尾
(6)f.seek(offset,whence=0, /)修改文件指针的位置,从whence参数指定的位置(0代表文件的起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节,返回值是新的索引位置
f = open('File.txt', "r+")
for each in f:
print(each)
print(f.tell())
## I love Python.
##
## I love Cloud!
## 29
print(f.seek(0))
## 0
(7)f.readline(size=-1,/):从文件对象中读取一行字符串(包括换行符),如果指定了size参数,则表示读取size个字符。
f = open('File.txt', "r+")
print(f.readline())
print(f.tell())
## I love Python.
##
## 16
(8)f.read(size=-1,/):从文件对象中读取指定数量的字符(或者遇到EOF停止);当未指定该参数,或该参数为负值的时候,读取剩余的所有字符
f = open('File.txt', "r+")
print(f.read())
print(f.tell())
## I love Python.
## I love Cloud!
## 29
(9)f.flush():将文件对象中的缓存数据写入到文件中(不一定有效)(即不关闭文件的情况下将内容保存到文件中)
(10)f.truncate(pos=None, /):将文件对象截取到pos的位置,默认是截取到文件指针当前指定的位置。