一、文件的操作
1、打开一个文件
语法:
open(filename,mode)
解释:
filename:代表你要访问的文件名
mode:这里代表你打开文件的模式,有 只读,写入,读写,追加等模式;默认为只读模式。
我们可以看下面的列表:
1、读模式 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
例子:
f = open("foo.txt", "r",encoding="UTF-8") #只读的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 i=f.read() # 读取文件,bing 赋值给i print(i) #打印i f.close() #关闭文件夹 #输出如下: C:Python35python.exe D:/linux/python/all_test/listandtup.py Python 是一个非常好的语言。 是的,的确非常好!!
2、读写模式 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
例子:
f = open("foo.txt", "r+",encoding="UTF-8") #读写的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 i=f.read() # 读取文件,bing 赋值给i print(i) #打印i f.write("我要学Python ") #写入 # f.flush() f.close() #关闭文件夹 输出: C:Python35python.exe D:/linux/python/all_test/listandtup.py 我要学Python 我要学Python
3、写模式 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
例子:
f = open("foo.txt", "w",encoding="UTF-8") #写的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 f.write("我要学Python ") #写入,文件夹存在覆盖,不存在创建 f.close() #关闭文件夹
4、读写模式 w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
例子:
f = open("foo.txt", "w+",encoding="UTF-8") #写的方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 f.write("我要学Python ") #写入,文件夹存在覆盖,不存在创建 print("定位之前的光标位置:%s" % (f.tell())) f.flush() #刷新文件使内存的内容刷新至文件夹 f.seek(0) #因为W+读取文件之后会定位在文件尾部,所以需要重新定位一下光标位置,要不无法读取 print("定位之后的光标位置:%s" % (f.tell())) i = f.read() print(i) f.close() #关闭文件夹 输出: C:Python35python.exe D:/linux/python/all_test/listandtup.py 定位之前的光标位置:17 定位之后的光标位置:0 我要学Python
5、追加 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
例子:
f = open("foo.txt", "a",encoding="UTF-8") #追加方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 f.write("我要学Python ") #写入,文件夹存在追加,不存在创建 print("定位之前的光标位置:%s" % (f.tell())) f.seek(0) #因为a追加文件之后会定位在文件尾部,所以需要重新定位一下光标位置,要不无法读取 print("定位之后的光标位置:%s" % (f.tell())) f.close() #关闭文件夹
6、追加读 a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
例子:
f = open("foo.txt", "a+",encoding="UTF-8") #追加读方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 f.write("我要学Python ") #写入,文件夹存在创建,不存在创建 print("定位之前的光标位置:%s" % (f.tell())) f.flush() #刷新文件使内存的内容刷新至文件夹 f.seek(0) #因为W+读取文件之后会定位在文件尾部,所以需要重新定位一下光标位置,要不无法读取 print("定位之后的光标位置:%s" % (f.tell())) i = f.read() print(i) f.close() #关闭文件夹 输出: C:Python35python.exe D:/linux/python/all_test/总练习.py 定位之前的光标位置:136 定位之后的光标位置:0 我要学Python 我要学Python 我要学Python 我要学Python 我要学Python
二、文件的操作方法
文件的常用方法有13种,如下图:
文件的file.close、file.flush、file.seek、file.tell在前面文件的读、写、追加已经介绍过了这里就不一一说了,下面我们说一下剩余的几种方法吧!
1、fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作
语法:
fileObject.fileno()
返回值:文件描述符
例子:
f = open("foo.txt", "a+",encoding="UTF-8") #追加读方式打开的文件,encoding是转码的意思,告诉解释器,是以UTF-8的格式 fid = f.fileno() print("文件的描述符为:",fid) f.close() #关闭文件夹 输出: C:Python35python.exe D:/linux/python/all_test/总练习.py 文件的描述符为: 3
2、next() 返回文件的下一行
语法:
next(iterator[,default])
例子:
# 打开文件 fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名为: ", fo.name) for index in range(5): line = next(fo) print ("第 %d 行 - %s" % (index, line)) # 关闭文件 fo.close() #输出 # C:Python35python.exe D:/linux/python/all_test/总练习.py # 文件名为: foo.txt # 第 0 行 - 我要学Python0 # 第 1 行 - 我要学Python1 # 第 2 行 - 我要学Python2 # 第 3 行 - 我要学Python3 # 第 4 行 - 我要学Python4
3、read方法:用于从文件读取指定的字节数,如果为给定或为负则读取所有
语法:
fileObject.read()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名为: ", fo.name) line = fo.read() #不指定字符节读取所有 print(line) fo.close() # 关闭文件 # 如下: # C:Python35python.exe D:/linux/python/all_test/总练习.py # 文件名为: foo.txt # 我要学Python0 # 我要学Python1 # 我要学Python2 # 我要学Python3 # 我要学Python4 # 我要学Python5 =========================================== fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名为: ", fo.name) line = fo.read(16) #指定读取16字节 print(line) fo.close() # 关闭文件 #如下: # C:Python35python.exe D:/linux/python/all_test/总练习.py # 文件名为: foo.txt # 我要学Python0 # 我要学Py
4、readline() 方法用于从文件读取整行,包括 " " 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 " " 字符。
语法:
fileObject.readline()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名为: ", fo.name) line = fo.readline(3) #指定读取16字节 print("读取指定的字符串为:%s" % (line)) print("光标现在的位置:%s" %(fo.tell())) fo.seek(0,0) #之所以用这个是因为前面已经读了16个字符了所以要把光标调到0 的位置 print("调整后光标的位置:%s" %(fo.tell())) line = fo.readline() #读取第一行 print("读取第一行:%s" % (line)) fo.close() # 关闭文件 #如下: # C:Python35python.exe D:/linux/python/all_test/总练习.py # 文件名为: foo.txt # 读取指定的字符串为:我要学 # 光标现在的位置:9 # 调整后光标的位置:0 # 读取第一行:我要学Python0
5、readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。如果碰到结束符 EOF 则返回空字符串。
语法:
fileObject.readlines()
例子:
fo = open("foo.txt", "r",encoding="UTF-8") print ("文件名为: ", fo.name) line = fo.readlines(3) #指定读取3字节 print("读取指定的字符串为:%s" % (line)) for line in fo.readlines(): line = line.strip(" ") #使用strip去掉换行符/n print("读取所有行:%s" % (line)) fo.close() # 关闭文件 输出如下: C:Python35python.exe D:/linux/python/all_test/总练习.py 文件名为: foo.txt 读取指定的字符串为:['我要学Python0 '] 读取所有行:我要学Python1 读取所有行:我要学Python2 读取所有行:我要学Python3 读取所有行:我要学Python4 读取所有行:我要学Python5 读取所有行:我要学Python6 读取所有行:我要学Python7
6、truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则重置到当前位置。
语法:
fileObject.truncate( [ size ])
例子:
fo = open("foo.txt", "r+",encoding="UTF-8") line = fo.readline() print ("读取行: %s" % (line)) fo.truncate() line = fo.readlines() print ("读取行: %s" % (line)) fo.close() # 关闭文件 输出: C:Python35python.exe D:/linux/python/all_test/总练习.py 读取行: 我要学Python1 读取行: ['我要学Python2 ', '我要学Python3 ', '我要学Python4'] ========================================== fo = open("foo.txt", "r+",encoding="UTF-8") fo.truncate(10) #截取10个字符,其余的清空 line = fo.read() print ("读取的数据: %s" % (line)) fo.close() # 关闭文件 输出如下: C:Python35python.exe D:/linux/python/all_test/总练习.py 读取的数据: 我要学P
7、writelines() 方法用于向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表,换行需要制定换行符 。
语法
writelines() 方法语法如下:
fileObject.writelines( [ str ])
例子:
fo = open("foo.txt", "a+",encoding="UTF-8") seq = ["我要学Python 1 ", "我要学Python 2"] fo.writelines( seq ) fo.flush() fo.seek(0,0) #跳到行首 line = fo.readlines() #读取所有行 print ("读取的数据: %s" % (line)) fo.close() # 关闭文件 输出: C:Python35python.exe D:/linux/python/all_test/总练习.py 读取的数据: ['我要学Python 1 ', '我要学Python 2']
OK,file的基本操作,就结束了,睡觉了。