python对文件的处理

open(操作系统指令)

  • 文件路径: 绝对路径或者相对路径, 路径中出现反斜杠会报错, 推荐在引号前加r(全部转义)

  • 打开编码方式: 跟随系统, windows默认编码是gbk, linux和mac默认编码是utf-8

  • 动作: 读/写/追加, mode默认模式为r(只读模式)

    ```py
    r/rb.  只读
    w/wb.  只写
    a/ab.  追加
    r+/r+b 先读后追加(不推荐使用)
    w+/w+b 先写后读(不推荐使用)
    a+/a+b 先追加后读(不推荐使用)
    ```
    
  • 文件句柄常用命名: a , a_sun

常用模式
##r 模式 只读(一般用于操作非文字类文件,encoding参数可以不写)
with open("demo.py", encoding="utf-8", mode="r") as a:
    print(a.read())  
with open("demo.py", "r") as b:   
    print(b.read())    

##rb 模式 (不做编码转化的只读, 一般用于操作非文字类文件, encoding参数可以不写)
with open("demo.py", "rb") as b:
    print(b.read())

##w 模式  只写(1.如果文件不存在创建文件并写入内容,2.如果文件存在则清空并写入内容)  
with open("sun.txt", "w") as s:
    u = "想要添加的内容"
    s.write(u)   

##wb 模式 (写入 bytes 格式的文件, 常用于写入图片等非文本文件)
with open("b.txt", mode="wb") as f:
    s = "写入内容"
    # 使用 utf-8 编码, 将 str 转为 bytes 类型
    content = s.encode("utf-8")
    # content = s.encode("gbk") # 使用 gbk 编码的 bytes 类型写入, 在默认解码为 utf-8 的时候会显示乱码
    f.write(content)

##a 模式  (1.如果文件不存在创建文件并写入内容,2.如果文件存在则追加写入)
with open("sun.txt", "a") as b:
    c = "kikukikukiku追加的内容"
    b.write(c)

##ab 模式  (追加 bytes 格式的文件)  
with open("b.txt", mode="ab") as f:
    s = "想要追加写入的内容"
    # 使用 utf-8 编码, 将 str 转为 bytes 类型
    content = s.encode("utf-8")
    # content = s.encode("gbk") # 使用 gbk 编码的 bytes 类型写入, 在默认解码为 utf-8 的时候会显示乱码
    f.write(content)

常用方法-读的操作

  • 读文件 for 循环 - 逐行读, 末尾自动退出
with open("demo.py", "r") as f:
    for i in f:
        print(i)
  • read() - 读 (1.不传参, 读取全文。2. 传参, 如果是 r 模式, 最小元素为字符, 如果是 rb 模式, 最小元素为字节)
with open("demo.py", encoding="utf-8", mode="r") as a:
    #读全文
    print(a.read()) 
     # 按最小元素读取
    print(a.read(10))
  • readline() - 逐行读, 末尾持续返回空行
with open("demo.py", encoding="utf-8", mode="r") as a:
    print(a.readline())
  • readlines() - 不推荐使用, 可能导致内存溢出
'''
读取全文, 每一行内容作为列表的一个元素, 可能导致内存溢出, 不推荐使用
readlines可以设定读取的最大字节大小 readlines(sizehint)
'''
with open("demo.py", encoding="utf-8", mode="r") as a:
    print(a.readlines())

常用方法-写的操作

  • write() - 全部写入(全部文本写入:可写单行, 可写多行)
with open("sun.txt", "w") as a:
    b = """kiku
kiku
kikujian
"""
    a.write(b)
  • writeline() - 遍历写入
with open("sun.txt","w") as a:
    b = [str(i) for i in range(30)]
    a.writelines(b)
  • flush() - 立即写入, 刷新缓冲区
'''
	刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
	一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用该方法。
'''
import sys, time
for i in range(10):
    sys.stdout.write("*")
    sys.stdout.flush()
    time.sleep(0.2)

常见操作

  • 判断文件读写操作
# 是否可读
f.readable()
# 是否可写
f.writable()
# 光标是否可操作
f.seekable()

例:
with open("sun.txt" , "r") as a:
    print(a.readable())
    print(a.writable())
    print(a.seekable())
===》
True
False
True
  • 光标使用
with open("sun.txt", "r") as a:
    #把光标移5位,包含换行符
    a.seek(5)
    #获取光标当前行内容
    a.tell()
    #读取内容
    print(a.read())
for i in `cat es_ip.txt`
do
 echo $i|awk -F '.' '{print $(NF-2)}'
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值