open函数的返回值就是文件对象, 提供了一些 api 让我们去操作文件的内容

file 对象的常用方法


read([length])

  1. 读取文件的内容. 如果读取的文本文件, 则返回的是字符串. 如果是二进制文件, 返回的是一个bytes object.

  2. 参数是读取的最大字节数, 文本就是最大的字符串数. 如果省略或者是负值, 表示读取文件的全部内容.

  3. 如果读到文件末尾, 则返回一个空字符串''(长度为0的字符串)

file = open("test.txt", "r+t", encoding="utf-8")

text = file.read()
print(text)
text = file.read()

if text == "":
    print("---文件读取结束了---")


readline()

  1. 读取文本文件. 读取一行字符. 使用\n作为换行符. 如果是 window 系统则会把\r\n转换成\n

  2. 换行符(\n)也会读取到返回的字符串中.

file = open("test.txt", "r+t", encoding="utf-8")

line = file.readline()
print(line, end="")


使用循环读取完所有的行

file = open("test.txt", "r+t", encoding="utf-8")

while True:
    line = file.readline()
    if line == "":
        break
    print(line, end="")


最好的办法是使用for循环, 省内存, 快速, 代码少

file = open("test.txt", "r+t", encoding="utf-8")

for line in file:
    print(line, end="")


readlines()

这个方法是把所有的行放入到一个列表中, 然后你就可以去使用这个列表了.

也可以使用 list(file)达到同样的目的

file = open("test.txt", "r+t", encoding="utf-8")
lines = file.readlines()
print(lines)


write(string)

向文件中写入字符串, 并返回写入的字符的个数.

file = open("new.txt", "w+", encoding="utf-8")

count = file.write("你好啊abc")
print(count)

注意:

  1. 如果文件模式使用a+, 则文件不存在会抛出异常.

  2. w+, 文件不存在会自动创建文件, 并写入

  3. a+, 追加的方式写入文件


如果是写入的其他类型的数据, 则写之前需要手动转换

根据你打开文件的模式, 来决定到底是转成字符串还是转成字节对象

file = open("new.txt", "w+t", encoding="utf-8")

nums = ("a", "b", "你 好", 30)

file.write(str(nums))

文件内容:

writelines()

把存储字符串的列表直接写入到文件中

写入的时候不会自动帮你格式化, 会把每个字符串元素挨个写在一起, 你应该在写入之前自行处理好格式

file = open("new.txt", "w+t", encoding="utf-8")

nums = ("a", "b", "你好")

file.writelines(nums)


tell(), 和 seek()

tell()返回文件指针在当前文件中的位置. 返回的值是以字节为单位的.

seek()设置文件指针的位置

file = open("new.txt", "r+t", encoding="utf-8")

print(file.tell())  # 文件打开之后指针位置默认为 0

print(file.read(1))

print(file.tell())

file.seek(4)
print(file.read(1))

关闭文件

为什么要关闭文件:

  1. 打开文件之后总是会占用一定的系统资源, 所以当你对文件操作完毕之后, 应该关闭文件.

  2. 写入数据的时候, 并不是立即写入到文件中, 一般先放入到缓冲区. 当关闭文件的时候, 再从缓冲区写入到文件中. (也可以手动调用flush()方法写入)

关闭文件调用文件对象的close()方法即可.

使用 with 方式打开文件

最好到方式是打开文件的时候使用with关键字, 可以在文件操作完毕之后在合适时间自动关闭文件, 即使发生了异常也能关闭文件.

而且代码要比处理异常的语句少(后面讲异常处理)

with open("new.txt", "r+", encoding="utf-8") as file:
    print(file.read())
Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-02-25 07:12:09

results matching ""

    No results matching ""