11 python初学 (文件)

对文件的操作分为 3 步:

  1. 打开文件;
    f = open('望月怀古', 'r', encoding='utf8')   # 路径可以写绝对路径,也可以写相对路径;
  2. 操作
  3. 关闭文件; f.close()

只读模式:r

f = open('望月怀古', 'r', encoding='utf8')
data = f.read(5)   # 读取 5 个字符: 1 个汉字和 1 个 英文字母都算是 1 个字符
print(data)
f.close()

写模式:w。 

# w:写操作。 在 f 对象被创建的时候就会将原来的文件清空,重新写操作。
# 如果没有该文件,则先会自动创建一个,在进行写入
f = open('望月怀古1', 'w', encoding='utf8')
f.write('望月怀古')
f.write('     张九龄')   # 会紧跟在上一句之后写入。
f.close()

在文件后继续添加:a

# a:append 直接在文件后面追加
f = open('望月怀古1', 'a', encoding='utf8')
print(f.fileno())   # 打印文件句柄
f.write('\nHello world')
f.close()

文件操作方法:

1. readline()

# 读取一行数据。 读取一行后,光标移动了,如果文件没有被关闭,下次会从光标处继续读
f = open('望月怀古', 'r', encoding='utf8')
f.readline()

2. readlines()

print(f.readlines())  # 读取所有行,放进一个列表中输出

# readlines 读取出来的列表会被放进内存中进行保存,因此当文件很大时并不建议使用此方法。使用 for i in f,即可对每一行做输出
f = open('望月怀古', 'r', encoding='utf8')
# for i in f.readlines():   不建议使用
for i in f:
    print(i.strip())
f.close()

3. tell() :得到当前光标位置

f = open('望月怀古', 'r', encoding='utf8')
print(f.tell())
f.read(7)
print(f.tell())

>>> 0
>>> 7

# 如果是英文字符,则读取 7 个后,当前光标位置是 7
# 如果是中文字符,读取 7 个后,当前光标位置是 21.因为一个中文占 3 个字符

4. seek():调节当前光标位置

#hello world
#
f = open('望月怀古', 'r', encoding='utf8')
print(f.tell())
print(f.read(7))
print(f.tell())

f.seek(0)  # 调节当前光标位置到0,从当前位置开始打印
print(f.read(4))

>>> 0
>>> hello w
>>> 7
>>> hell    # 又从光标 0 的地方开始输出

 5. flush() :把缓存里的数据保存到磁盘里区

f.flush()

6.

猜你喜欢

转载自www.cnblogs.com/mlllily/p/10212087.html