(一) 文件本身的操作
1.1 打开和关闭文件
①:open()函数 —— 打开或新建一个函数
- 格式:
file object = open(file_name [, access_mode][, buffering])
file_name :文件路径
access_mode:访问模式,默认文件访问模式为只读®。
buffering:如果buffering的值被设为0,就不会有寄存;如果buffering的值取1,访问文件时会寄存行;如果将buffering的值设为大于1的整数,表明了这就是寄存区的缓冲大小;如果取负值,寄存区的缓冲大小则为系统默认。 - 返回值:文件io 对象
- 打开模式:
模式 | 描述 |
---|---|
r | 只读模式。文件不存在就报错,存在则准备读取文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
-------- | ----- |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
② close()函数 ——关闭文件
- 格式:文件io对象.close()
- 返回值:None
1.2 file对象的属性
属性 | 描述 |
---|---|
file.closed | 如果文件也被关闭,则返回ture,否则返回false |
file.mode | 返回被打开文件的访问模式 |
file.name | 返回文件的名称 |
file.softspace | 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。 |
1.3 读写操作
① read()方法:——读取文件
格式:文件io对象.read()
返回值:整个文件的字符
格式:文件io对象.read(字符长度)
返回值:指定长度的字符
# 打开一个文件
f = open("foo.txt", "r+",encoding='utf-8')
str = f.read();
print("读取的字符串是 : ", str)
# 关闭打开的文件
f.close()
## 输出内容为:
>>> 这是第一行
>>> 这是最后一行
② readline()方法:——读取一行文件
格式:文件io对象.readline()
返回值:一行内容的字符串
格式:文件io对象.readline(字符长度)
返回值:一行内容的字符串
字符长度<当前行内内容,则读取指定长度的字符串,并且下
次再读取还是在这个一行中获取没有读取的内容。字符长度
>=当前行内容,直接读取当前行
f.readline() 会从文件中读取单独的一行。换行符为 ‘\n’。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
# 打开一个文件
f = open("foo.txt", "r",encoding='utf-8')
str = f.readline()
print("读取的字符串是 : ", str)
# 关闭打开的文件
f.close()
## 输出内容为:
>>> 这是第一行
③ readlines()方法: —— 将文件中的内容读取到序列中
格式:文件io对象.readlines()
返回值:列表
格式:文件io对象.readlines(字符长度)
返回值:读取指定长度的字节, 并且将这些字节按行分割
读取的行数由字符长度决定,如果字符长度读取了N行后,还有指定长度的字符没有读取,则直接读取下一行进来
# 打开一个文件
f = open("foo.txt", "r",encoding='utf-8')
str = f.readlines()
print("读取的字符串是 : ", str)
# 关闭打开的文件
f.close()
## 输出内容为:
>>> ['这是第一行\n','这是第二行\n']
④ write()方法:——写入文件
格式:文件io对象.write(字符串)
返回值:写入字符串的长度
# 打开一个文件
f = open("foo.txt", "w+",encoding='utf-8')
f.write("可以 ,你做的很好!\n 6666\n")
# 关闭打开的文件
f.close()
注:write()方法不会在字符串的结尾添加换行符(’\n’)
⑤ writelines()方法:——将序列写入文件
格式:文件io对象.writelines(序列)
返回值:None
⑥ truncate()方法:——字符串截取操作
格式:文件io对象.truncate(字节长度)
返回值:截取的字节长度
1.4 文件定位操作
① tell()方法:——文件内的当前位置
即下次文件的读写操作开始发生的位置
格式:文件io对象.tell()
# 查找当前位置
position = f.tell();
print("当前文件位置 : ", position)
>>> 当前位置:28
② seek()方法:——改变当前文件的位置
格式:seek(offset,[from])
offset:要移动的字节数
from:指定开始移动字节的参考位置
from=0:将文件的开头作为移动字节的参考位置;from=1:使用当前的位置作为参考位置;from=2:该文件的末尾将作为参考位置。
# 把指针再次重新定位到文件开头
position = f.seek(0, 0);
str = f.read(10);
print("重新读取字符串 : ", str)
1.5 重命名文件
rename()方法:
格式:os.rename(current_file_name,new_file_name)
import os ##必须先导入模块,才能调用他的功能
# 重命名文件foo.txt到f.txt。
os.rename("foo.txt", "f.txt")
1.6 删除文件
remove()方法:
格式:os.remove(filename)
import os
# 删除一个已经存在的文件f.txt。
os.remove("f.txt")
(二) 目录操作
① mkdir()方法:——在当前目录下创建新目录
格式:os.mkdir("newdir")
import os
# 创建目录test
os.mkdir("test")
② getcwd()方法:——显示当前的工作目录
格式:os.getcwd()
import os
# 给出当前的目录
print(os.getcwd())
>>> F:\Pycharm\WorkPlace
③ rmdir()方法:——删除目录
格式:os.rmdir('dirname')
import os
# 删除”test”目录
os.rmdir("test")
(三) 其他方法
方法 | 描述 |
---|---|
file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
file.fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
file.next() | 返回文件下一行 |