文件操作

参考:http://www.cnblogs.com/linhaifeng/articles/5984922.html#_label28

"""文件 读 r 操作"""

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 【Python基础】文件操作 随笔 第1张
f=open('陈粒',encoding='utf-8')
data=f.read()
print(data)
f.close()

f=open('xxx')
data=f.read()
print(data)


f=open('陈粒','r',encoding='utf-8')
data=f.read()
# print(data)
print(f.readable())
print('第1行',f.readline(),end='')
print('第2行',f.readline())
print('第3行',f.readline())
# for i in range(1):
#     pass
print('第4行',f.readline())
print('第5行',f.readline())
print('第6行',f.readline())
print('第7行',f.readline())

data=f.readlines()
print(data)
f.close()
读文件

 

 

""" 文件 写 w 操作 """

【Python基础】文件操作 随笔 第3张
f=open('陈粒1','w',encoding='utf8')
# f.read()
f.write('11111111\n')
f.write('222222222\n')
f.write('333\n4444\n555\n')
# f.writable()
f.writelines(['555\n','6666\n'])
f.writelines(['555\n','6666\n',1]) # 文件内容只能是字符串,只能写字符串
f.close()
写文件

"""文件 追加 a 操作"""

【Python基础】文件操作 随笔 第5张
f=open('陈粒1','a',encoding='utf-8')
f.write('追加方式写到文件最后')
追加写操作

"+" 表示可以同时读写某个文件

r+, 读写【可读,可写】

w+,写读【可读,可写】

a+, 写读【可读,可写】

"""文件修改"""

【Python基础】文件操作 随笔 第7张
src_f=open('xxx','r',encoding='gbk')
data=src_f.readlines()
src_f.close()

# for i in data:
#     print(i)
print(data)
dst_f=open('xxx','w',encoding='gbk')
# dst_f.writelines(data)
dst_f.write(data[0])
dst_f.close()

with open('a.txt','w') as f:
    f.write('1111\n')


src_f=open('xxx','r',encoding='gbk')
dst_f=open('xxx','w',encoding='gbk')
修改文件

"""以 with 方式打开多个文件"""

【Python基础】文件操作 随笔 第9张
with open('xxx','r',encoding='gbk') as src_f,\
        open('xxx_new','w',encoding='gbk') as dst_f:
    data=src_f.read()
    dst_f.write(data)

f=open('a.txt')
print(f.encoding) #查看文件编码
View Code

"""以 bytes(二进制)方式打开文件"""

【Python基础】文件操作 随笔 第11张
f=open('test11.py','rb',encoding='utf-8')     #b的方式不能指定编码
f=open('test11.py','rb') #b的方式不能指定编码
data=f.read()

#'字符串'---------encode---------》bytes
#bytes---------decode---------》'字符串'

print(data)
print(data.decode('utf-8'))
f.close()


f=open('test22.py','wb') #b的方式不能指定编码
f.write(bytes('1111\n',encoding='utf-8'))
f.write('中国'.encode('utf-8'))

f=open('test22.py','ab') #b的方式不能指定编码
f.write('中国'.encode('utf-8'))

open('a.ltxt','wt')
View Code

补充:"""需求:读取几万行日志文件的最后一行
f.readlines() 直接全部读出来放在内存中 很耗内存空间
"""

【Python基础】文件操作 随笔 第13张
# f=open('日志文件','rb')
# data=f.readlines()
# print(data[-1].decode('utf-8'))

f=open('日志文件','rb')

# for i in f.readlines():
#     print(i)

#循环文件的推荐方式,以行为单位读取,取一行用一行 不全部放在内存中
# for i in f:
#     print(i)

for i in f:
    offs=-10
    while True:
        f.seek(offs,2)
        data=f.readlines()
        if len(data) > 1:
            print('文件的最后一行是%s' %(data[-1].decode('utf-8')))
            break
        offs*=2
View Code

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄