python语法之文件处理


1、什么是文件
操作系统提供给你操作硬盘的一个工具

2、为什么要用文件
因为人类和计算机要永久保存数据

3、怎么用文件

相对路径:a.txt # 必须与当前py文件在同一级目录
绝对路径:D:\项目路径\pxxx\xxx\a.txt

f = open("a.txt")

print(f.readable()) # 判断当前文件是否可读
print(f.writable()) # 判断当前文件是否可写

# del f # 回收变量资源
f.close() # 回收操作系统的资源


with open('a.txt',mode='r')as rf,\
      open('a.txt',mode='w')as wf: # with会自动帮你回收操作系统的资源,无需自己操作
print(rf.readable())
print(wf.writable())

# r进行转义
with open(r'D:\项目路径\python13期\day07\a.txt')as f:
print(f.read()) # 读取文件

 

4、文件处理模式

# 默认打开文件的模式:rt  read text
                # rb  read bytes

with open(r'dir\a.txt',mode='rb')as f:
    print(f.read())


with open(r'th.jpg',mode='rb')as rf,\
         open('lixiaoran.png',mode='wb')as wf:
     lixiaoran = rf.read()
     wf.write(lixiaoran)

 

5、文件打开模式

"""
打开文件的三种模式:
    r :
        1、只读
        2、如果文件不存在,会报错
    w:(慎用)
        1、只写
        2、如果文件不存在,则新建一个文件写入数据
        3、如果文件内存在数据,会将数据清空,重新写入
    a:
        1、追加写
        2、如果文件内存在数据,会在已有数据的后面追加数据
        3、如果文件不存在,则新建一个文件写入数据
处理文件的模式:
    t
    b
"""

with open(r'dir\b.txt','r',encoding='gbk')as f:
     print(f.readable())
print(f.read())
print(f.readline())  # 执行一次,打印一行内容
print(f.readlines())
print(f.read())
print(f.readable())
print(f.read())
for i in f:
     print(i)


with open(r'dir\b.txt', 'w', encoding='gbk')as f:
     # f.write("nick is great")
     f.writelines(["bonny\n",'haha'])


with open(r'dir\aaaaa.txt','a',encoding='gbk')as f:
     print(f.writable())
     f.write("\nwonderful")

 

6、文件打开模式补充(了解)

# r+ 模式  有文件时追加写,没有文件报错
with open('a.txt','r+',encoding='utf-8')as f:
    f.read()
    f.write('我爱北京天安门')

with open('b.txt','r+',encoding='utf-8')as f :
    f.write('小猪佩奇')

#w+模式 清空原文件,写入新数据,没有原文件,创建新文件并写入数据
with open('a.txt','w+',encoding='utf-8')as f:
    f.write('肥洋洋\n')
    f.write('美洋洋\n')

#a+模式 在原文件末尾追加写入数据,没有文件时创建新文件并写入数据
 with open('a.txt','a+',encoding='utf-8')as f: f.write('灰太狼\n')

 

7、文件内光标的移动

'''
f.seek(offset,whence)
offset: 相对偏移度 (光标移动的位数)针对的是字节
whence:指定光标位置从何开始
    0:从文件开头
    1:从当前位置
    2:从文件末尾

补充:
    utf-8:
        中文是3个bytes
        英文是1个bytes
    gbk:
        中文是2个bytes
        英文是1个bytes

'''
#文件内光标的移动
with open(r'a.txt','r',encoding='utf-8')as f:
    f.seek(3,0)
    print(f.read(6))

结果:

 

 

 

#seek()参数1的使用
with open(r'a.txt','rb')as f:
    f.read(6)
    f.seek(3,1)
    print(f.tell())
    print(f.read(3).decode('utf-8'))

#seek()参数2的使用
with open(r'a.txt','rb')as f:
    # print(f.read())
    f.seek(-6, 2)
    print(f.tell())
    print(f.read(3).decode('utf-8'))

 

8、写入一个动态监测文件动态的脚步

 

 

posted @ 2019-11-07 16:44  小猪皮蛋  阅读(365)  评论(0编辑  收藏  举报