f = open('../gg.txt','r',encoding = 'utf-8')
for i in f:# 读取文件中的内容。 一行一行的读取。 每次读取的内容交给前面的变量
    print(i.strip)
f.close(dir_fd)  # don't leak a file descriptor

# 每次记得用完就close
# Open返回的f是可迭代文档对象
# 优化的写法 这里用with..as.. 可以帮助我close()文件
with open('spamspam.txt', 'w', opener=opener) as f:
    print('This will be written to somedir/spamspam.txt', file=f)
#===========基本操作=============
f.writelines() # 直接将一个列表的内容传递写进去,注意的是写入的东西都必须是字符串,如果不是字符串的话就会报错
f.writable() # 判断文件是否是可写的
f.read() # 一次性直接读取全部,如果里面写入了数据则按照数字读取文本的个数eg:f.read(2) 表示读取文件的多少个字符
f.readlines() # 整行读取为一个元素,并将每行作为一个元素添加到列表中(说明返回值是一个列表)一次性全部读取
f.readline() # 只是读取一行
f.readable()  # 判断文件否是可读的

#============读写模式============
# 
r #只读  (文件必须是已经存在)
w #写入,如果文件已经存在则将原来的文件覆盖,再写入(文件不存在的话可以自动创建)
a # 打开一个文件用于追加写入  (文件不存在的话可以自动创建)与w模式一样,不过写入的时候,写入到文件的最后
r+ w+ a+ # + 表示的是功能的扩展,# r+  读写, w+  写读, a+ 追加写读, r+b, w+b, a+b(功能一样,不过是用于非文本文件的操作)

#===========对光标的操作=============
# seek(offset,from)
# 一个偏移量  一个方向

# from 中  0  表示文件开头
# 1    表示当前位置
# 2    表示文件末尾
# 偏移量  选定的位置向右偏移指定的字节
# 把光标移动到文件的开头: seek(0)
# 把光标移动到末尾: seek(0, 2)
gg = f.tell()  可以知道当前已经读取到那个字节
f.seek(0,2) # 回到文本的末尾
pan.seek(0,gg)  # 回到先前的光标的位置

#truncate() 截断文件. 慎用 无法恢复
f.seek(5) # 光标移动到5
f.truncate() # 默认从开头截取到光标位置
f.truncate(3) # 从头截取到3字节,之后光标后面的 所有内容全部删除


#===========常用方法===============
# 序号    方法及描述
# 1 file.close()    关闭文件。关闭后文件不能再进行读写操作。
# 2 file.flush()    刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
# 3 file.fileno()   返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
# 4 file.isatty()   如果文件连接到一个终端设备返回 True,否则返回 False。
# 5 file.next()     返回文件下一行。
# 6 file.read([size])   从文件读取指定的字节数,如果未给定或为负则读取所有。
# 7 file.readline([size])   读取整行,包括 "\n" 字符。
# 8 file.readlines([sizehint])  读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。
# 9 file.seek(offset[, whence]) 设置文件当前位置
# 10    file.tell() 返回文件当前位置。
# 11    file.truncate([size])   截取文件,截取的字节通过size指定,默认为当前文件位置。
# 12    file.write(str) 将字符串写入文件,没有返回值。
# 13    file.writelines(sequence)   向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

#===========结尾==================
# 这里只是举例最简单txt,python还可以操作json、excel、二进制文件(视频之类的)