Python 文件操作随记

一、文件打开-模式

不同模式打开文件操作说明:

个人觉得需要熟知的:

  • +   :可读、可写。
  • r    :读,指针在开头。不会创建文件。
  • r+  :读、写,指针在开头。不会创建文件。写内容在结尾累加。
  • w   :写、创建、覆盖,指针在开头。从开头开始编辑,即原有内容会被删除。
  • w+ :读、写、创建、覆盖,指针在开头。从开头开始编辑,即原有内容会被删除。
  • a    :写、创建,指针在结尾。用于追加。新的内容将会被写入到已有内容之后。
  • a+  :读、写、创建,指针在结尾。用于追加。新的内容将会被写入到已有内容之后。

需要了解的:

  • t    :文本模式 (默认)
    x   :写模式,新建一个文件,如果该文件已存在则会报错。
    b   :二进制模式。
    U  :通用换行模式(不推荐)。
    rb  :类似r模式,只是以二进制格式打开。一般用于非文本文件如图片等。
    rb+:类似r+模式,只是以二进制格式打开。一般用于非文本文件如图片等。
    wb :类似w模式,只是以二进制格式打开。一般用于非文本文件如图片等。
    wb+:类似w+模式,只是以二进制格式打开。一般用于非文本文件如图片等。
    ab  :类似a模式,只是以二进制格式打开。一般用于非文本文件如图片等。
    ab+:类似a+模式,只是以二进制格式打开。一般用于非文本文件如图片等。

二、File对象的系列文件操作

文件操作open函数理解:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

#file: 必需,文件路径(相对或者绝对路径)。
#mode: 可选,文件打开模式
#buffering: 设置缓冲
#encoding: 一般使用utf8
#errors: 报错级别
#newline: 区分换行符
#closefd: 传入的file参数类型
#opener:可以通过调用*opener*方式,使用自定义的开启器。底层文件描述符是通过调用*opener*或者*file*, *flags*获得的————目前没搞懂这个参数的作用

直接上操作例子:

fil=open("2.txt","r+") # 读写模式a,a+在文件结尾追加;w、w+在文件开头,原有信息会被删除;有文件则读写,无文件则创建
str1=fil.read(2)  # read(2)当前位置向后读取两字节内容
print("写操作前读去内容:",str1,"  指针当前位置:",fil.tell())  # tell()或者当前位置
fil.write("0123456789q")  # write()写操作
fil.write("mmn")
print("写操作完成后,指针当前位置:",fil.tell())
print()

print("\n文件名称:",fil.name)
print("文件操作模式:",fil.mode)
print("文件操作是否关闭状态:",fil.closed)
print()

fil.close()
print("关闭文件操作后,文件操作关闭状态:",fil.closed)
写操作前读去内容:    指针当前位置: 0
写操作完成后,指针当前位置: 14


文件名称: 2.txt
文件操作模式: r+
文件操作是否关闭状态: False

写操作前读去内容,读取长度2: 34   from设为0,移动3,指针当前位置: 5

seek()函数可以将指针指向指定位置,seek(offset [,from])

说明:from为1或2时,文件需是按二进制文件模式打开:

fil=open("2.txt","rb+") 
print("文件读取内容:",fil.read())
# seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。

# from为0将指针重新定位文件开头
fil.seek(3,0)
print("写操作前读去内容,读取长度2:",fil.read(2),"  from设为0,移动3,指针当前位置:",fil.tell())

# from设为1,则使用当前的位置作为参考位置。
fil.seek(3,1)
print("from设为1,移动3,指针当前位置:",fil.tell())

# from被设为2,那么该文件的末尾将作为参考位置
fil.seek(-3,2)
print("from设为2,移动3,指针当前位置:",fil.tell())

fil.close()
print("关闭文件操作后,文件操作关闭状态:",fil.closed)



文件读取内容: b'0123456789qmmn'
写操作前读去内容,读取长度2: b'34'   from设为0,移动3,指针当前位置: 5
from设为1,移动3,指针当前位置: 8
from设为2,移动3,指针当前位置: 11
关闭文件操作后,文件操作关闭状态: True

文件内容读取补充

import sys

fil=open("2.txt","r+")
print ("读取整行的数据为: ",fil.readline())
print ("读取下一行的数据为: ",fil.__next__())
print ("read读取的数据为: ",fil.read())

# 重新设置文件读取指针到开头
fil.seek(0, 0)
lines = fil.readlines()
print ("lines读取的数据为: %s" % (lines))
print ("lines[2]读取的数据为: ",lines[2])  # 从0开始算位,即2则是第三个数
print ("lines读取的数据行数为: ",lines.__len__())
for idx in lines:
    sys.stdout.write(idx)
# print(idx.replace('\n',''))
print()
print ("位置:",fil.tell())

fil.close()

文件内容:
a6
b5
c4
d3
e2
f1
g7

 运行结果:

读取整行的数据为:  a6

读取下一行的数据为:  b5

read读取的数据为:  c4
d3
e2
f1
g7
lines读取的数据为: ['a6\n', 'b5\n', 'c4\n', 'd3\n', 'e2\n', 'f1\n', 'g7']
lines[2]读取的数据为:  c4

lines读取的数据行数为:  7
a6
b5
c4
d3
e2
f1
g7
位置: 26

三、OS对象提供对文件目录操作

import os

# 重命名文件
os.rename("readT.txt","2.txt")

# 删除文件
os.remove("1.txt")

# 创建文件夹3
os.mkdir("3")

# 获取当前目录
print(os.getcwd())

# 修改当前目录
os.chdir("D:\3")

# rmdir()方法删除目录,目录名称以参数传递。
os.rmdir("3")

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值