一.文件的打开,open函数
f = open(file_name,mode)#创建文件对象
打开模式有很多种
1. 'r': 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
2. 'r+': 打开一个文件用于读写。文件指针将会放在文件的开头,但写入内容会写到文件内容末尾。
3. 'w': 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
4. 'w+': 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
5. 'a': 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
6. 'a+': 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。读文件时从文件内容的末尾读,因为文件指针放在文件的结尾。
with open as语句
不必写f.close(),会自动在末尾关闭文件,即使在文件操作中发生错误
with open('/path/to/file', 'r') as f:
print(f.read())
二.文件对象的属性
file.closed : 如果文件已被关闭返回true,否则返回false。
file.mode : 返回被打开文件的访问模式。
file.name : 返回文件的名称。
三.文件的关闭
file_object.close()
四.文件的读写操作
write方法
file_object.write(string)
read方法
file_object.read(count)#count为字节数,不填则读到文件末尾
readlines方法用于读取所有行
file_object.readlines( )
#文件内容如下
#12345
#67890
#09876
#54321
p=f.readlines()
print(p)
#输出为['12345\n', '67890\n', '09876\n', '54321']
五.文件的定位
tell方法
print(file_object.tell())#输出文件内的当前位置, 即下一次的读写会发生在文件开头多少字节之后。
#根据编码的不同,每个汉字所占的字节也不同,utf-8中一个汉字占3个字节,此处的数量和read函数的参数意义不同,read函数参数中1代表一个字符
#例如以下为文件内容
#这是汉字
print(file_object.read(3))#输出为这是汉
seek方法
seek(offset ,from)方法改变当前文件的位置。offset变量表示要移动的字节数。from变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
file_object.seek(3)#from参数默认为0
六.截断文件
truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字节。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
file_object.truncate(size)
七.flush方法
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
file_object.flush()
未完待续