新手Python学习记录Day4

文件操作

f = open('lyrics.txt')

first_line = f.readline() #读取一行数据
for line in f.readlines(): #将所有行组成一个列表
    print(line.strip())

for index,line in enumerate(f.readlines()): #很占内存,一般不用
    if index % 9 == 0:
        print('分割线'.center(50,'-'))
    else:
        print(line.strip())

count = 0
for line in f: #内存每次只保存一行,节省内存。
    print(line) #不能读取下标,需要自定义计数器
    count += 1

data = f.read() #读取剩余所有数据,文件大时不要使用
data2 = f.read() #此时文件指针已经在最后,因此data2读不到结果

f.close()

打开文件的模式有:

r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;会覆盖之前所有内容】
a,追加模式。【可读;   不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件

f.open('lyrics2.txt','w')
f.write('歌词结尾\n')

r+,可读写文件。【可读;可写;可追加】
w+,写读
a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

rU
r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb
wb
ab

文件光标

f.read(50) #阅读到50个字符

f.tell() #输出光标位置

f.seek(0) #光标回到0位置

f.name() #文件名

f.buffer() #显示缓存中的对象

f.write() #先写进缓存中,还未储存到硬盘中
f.flush() #刷新,表示立刻将缓存中的内容储存到硬盘,在文件中显示出来

f.truncate(20) #从头截断到20个字符位置

展示出打印机效果

import sys
import time

for i in range(20):
    sys.stdout.write('#')
    sys.stdout.flush()
    time.sleep(0.1)

with语句

with open('log','r') as f:
    ... #with执行完后,内部会自动关闭并释放文件资源,防止打开文件后忘记

编码转换

import sys
print(sys.getdefaultencoding())
msg = "外北京"
msg_gb2312 = msg.encode('gb2312')
msg_gb2312_to_unicode = msg_gb2312.decode('gb2312')
msg_gb2312_to_utf8 = msg_gb2312.decode('gb2312').encode('utf-8')

猜你喜欢

转载自blog.csdn.net/weixin_38667944/article/details/88074785