Python3 File 方法总结目录
- 1. file.close()
- 2. file.flush()
- 3. file.fileno()
- 4. file.isatty()
- 5. file.next()
- 6. file.read()
- 7. file.readline()
- 8. file.readlines()
- 9. file.seek()
- 10. file.tell()
- 11. file.truncate()
- 12. file.write()
- 13. file.writelines()
1. file.close()
close()方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作,否则会报错。该方法允许调用多次。使用close()方法关闭文件是一个好习惯。
语法:
fileObject.close() #无参数,无返回值
实例:
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名: ", fo.name)
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
2. file.flush()
flush()方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但是有时你需要在关闭之前刷新它,这时就可以使用flush()方法。
语法:
fileObject.flush() #无参数,无返回值
实例:
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名: ", fo.name)
#刷新缓冲区
fo.flush()
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
3. file.fileno()
fileno()方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的I/O操作。
语法:
fileObject.fileno() #无参数,无返回值
实例:
#python
#文件打开
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
fd = fo.fileno()
print("文件描述符为: ", fd)
#文件关闭
fo.close()
输出结果:
文件名为: hello.txt
文件描述符为: 3
4. file.isatty()
isatty()方法检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False。
语法:
fileObject.isatty() #无参数,返回值为True或则False
实例:
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
isa = fo.isatty()
print("返回值为: ", isa)
#关闭文件
fo.close()
输出结果:
文件名: hello.txt
返回值为: False
5. file.next()
python3 中的file对象不支持next()方法。python3的内置函数next()通过迭代器调用__next__()方法返回下一项。 在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发Stoplteration
语法:
next(fileobject)
#参数 命名的打开文件名
#返回值 返回文件下一行
实例:
# hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
for index in range(1,5):
line = next(fo)
print("第 %d 行 : %s" % (index, line))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
第 1 行 : 第一行內容
第 2 行 : 第二行內容
第 3 行 : 第三行內容
第 4 行 : 第四行內容
6. file.read()
read()方法用于从文件读取指定的字节数,如果未给出或为负数则读取所有。读取包括"\n"字符。
语法:
fileObjext.read(size)
#参数 size 从文件中读取的字节数
#返回值 返回从字符串中读取的字节
实例:
# hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
line = fo.read(10)
print("读取的字符串: %s" % (line))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
读取的字符串: 第一行內容
第二行內
7. file.readline()
readline()方法用于从文件读取整行,包括"\n"字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括"\n"字符。如果未给定,则输出整行。
语法:
fileObject.readline(size)
#参数 size 从文件中读取的字节数
#返回值 返回从字符串中读取的字节
实例:
# hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
line = fo.readline()
print("读取第一行: %s" % (line))
line = fo.readline(3)
print("读取字符串为: %s" % (line))
#关闭文件
fo.close()
输出结果:
文件名: hello.txt
读取第一行: 第一行内容
读取的字符串: 第一行
8. file.readlines()
readlines()方法==用于读取所有行(直到结束符EOF)并返回列表,==若给定size>0,返回总和大约为size字节的行,实际读取值可能比size较大,因为需要填充缓冲区。
如果碰到结束符EOF则返回空字符串。
语法:
fileObject.readlines(size)
#参数 size 从文件中读取的字节数
#返回值 返回列表,包含所有行
实例:
# hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
line = fo.readlines()
print("读取的数据为: %s" % (line))
line = fo.readline(2)
print("读取的数据为: %s" % (line))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
读取的数据为: ['第一行內容\n', '第二行內容\n', '第三行內容\n', '第四行內容']
读取的数据为: []
9. file.seek()
seek()方法用于移动文件读取指针 到 指定位置。
语法:
fileObject.seek(offset, whence)
#参数
* offset 开始的偏移量,也就是代表需要移动偏移的字节数
* whence 可选,默认值为0。给whence参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾开始算起。
#返回值 无返回值
实例:
# hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
line = fo.readline()
print("读取的数据为: %s" % (line))
#重新设置文件读取指针到开头
fo.seek(0, 0)
line = fo.readline()
print("读取的数据为: %s" % (line))
#从当前位置指针开始
fo.seek(0, 1)
line = fo.readline()
print("读取的数据为: %s" % (line))
#从文件末尾开始
fo.seek(0, 2)
line = fo.readline()
print("读取的数据为: %s" % (line))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
读取的数据为: 第一行內容
读取的数据为: 第一行內容
读取的数据为: 第二行內容
读取的数据为:
10. file.tell()
tell()方法返回文件的当前位置,即文件指针当前位置。
语法:
fileObject.tell()
#无参数
#返回值 返回文件指针当前位置
实例:
#hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt",encoding='utf-8')
print("文件名为: ", fo.name)
line = fo.readline()
print("读取的数据为: %s" % (line))
#获取当前文件指针位置
path = fo.tell()
print("当前指针位置: %d" % (path))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
读取的数据为: 第一行內容
当前指针位置: 17
11. file.truncate()
truncate()方法用于截断文件,如果指定了可选参数size,则表示截断文件为size个字符。如果没有指定size,则重置到当前位置。(换行符’\n‘也会被计算)
语法:
fileObject.truncate(size)
#参数 size 可选,如果存在则文件截断为size个字节。
#返回值 无返回值
实例:
#hello.txt
hello
world
everyone
#python
#打开文件
fo = open("hello.txt", 'r+', encoding='utf-8')
print("文件名为: ", fo.name)
fo.truncate(10)
#读取现在文件所有的内容
line = fo.read()
print(line)
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
hello
wor
现在hello.txt文件内容:
#hello.txt
hello
wor
12. file.write()
write()方法用于向文件中写入指定字符串。在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中看不到写入的内容的。
语法:
fileObject.write(str)
#参数 str ---要写入文件的字符串
#返回值 无返回值
实例:
#hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt","r+", encoding='utf-8')
print("文件名为: ", fo.name)
str = '\n第五行内容'
#在文件末尾写入一行
fo.seek(0, 2)
line = fo.write(str)
#回到文件开头,读取文件所有内容
fo.seek(0, 0)
for index in range(1,6):
line = next(fo)
print('第 %d 行 -- %s' % (index, line))
#关闭文件
fo.close()
输出结果:
文件名为: hello.txt
第 1 行 -- 第一行內容
第 2 行 -- 第二行內容
第 3 行 -- 第三行內容
第 4 行 -- 第四行內容
第 5 行 -- 第五行内容
现在hello.txt,文件内容:
第一行內容
第二行內容
第三行內容
第四行內容
第五行内容
13. file.writelines()
writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符\n.
语法:
fileObject.writelines([str])
#参数 str --要写入文件的字符串序列
#返回值 无返回值
实例:
#hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
#python
#打开文件
fo = open("hello.txt","r+", encoding='utf-8')
print("文件名为: ", fo.name)
seq = ['\n添加第五行内容', '\n添加第六行内容']
#在文件末尾写入
fo.seek(0, 2)
line = fo.writelines(seq)
#回到文件开头,读取文件所有内容
fo.seek(0, 0)
line = fo.read()
print(line)
#关闭文件
fo.close()
输入结果:
文件名为: hello.txt
第一行內容
第二行內容
第三行內容
第四行內容
第五行内容
添加第五行内容
添加第六行内容
本篇完