python-12 文件操作

文件对象的方法

1、open():创建一个file对象,默认是以只读模式打开
2、read(n): n表示从文件中读取的数据的长度,没有传n值就默认一次性读取全部内容
3、write():将指定内容写入文件
4、close():关闭文件

文件属性

name 返回要打开的文件的文件名,可以包含文件的具体路径
mode 返回文件的访问模式
closed 检测文件是否关闭 关闭就是返回true

范例:

# 打开文件
f = open("./file/test.txt")
print(f.name) # 文件名
print(f.mode) # 打开方式
print(f.closed) # 文件是否关闭
# 关闭文件 close要和open函数成对出现
f.close()
print(f.closed) # 文件是否关闭
-----------------------------------------
./file/test.txt  #带路径的文件名
r # 只读
False # 未关闭
True #已关闭

读写操作

read(n) 读取文件
readline() 一次读取一行内容
readlines() 按照行的方式第一次性读取全部内容 返回一个列表
write() 写入内容

test.txt:
zhangsan 18
lisi 16
wangwu 20

f = open("./file/test.txt")
print(f.read())

f.close()
------------------------
zhangsan  18
lisi 16
wangwu 20
=======================
print(f.read(5))
--------------
zhang
=======================
print(f.read(5))
print(f.readline())
--------------------------
zhang
san  18  # 可以看出来 读取是根据指针来的,前面读过了就不能再读取到了除非把指针前移
==============================
print(f.read(5))
print(f.readline())
print(f.readline())
--------------------------------
zhang
san  18

lisi 16
=========================
f = open("./file/test.txt")
print(f.readlines())
f.close()
-------------------------------
['zhangsan  18\n', 'lisi 16\n', 'wangwu 20']

按行循环读取

f = open("./file/test.txt")
while True:
    text = f.readline()
    if not text:
        break
    print(text)
f.close()
--------------------
zhangsan  18
lisi 16
wangwu 20

访问模式

模式 可做操作 若文件不存在 是否覆盖
r 只读 报错 -
r+ 可读可写 报错 是,从指针开始覆盖写入量的数据,不清空文件
w 只写 创建
w+ 可读可写 创建 是,打开文件的时候就清空文件了
a 只写 创建 否,追加写
a+ 可读可写 创建 否,追加写
f = open("./file/test.txt", 'w+')  # 此时已清空文件
print(f.read())
f.write("hahh")
f.seek(0) # 让指针回到开头
print(f.read())
f.close()
-----------------------
  # 第一次读取到的是清空的文件
hahh # 第二次读取到的是写入的文件

文件定位操作

tell() 显示文件当前位置,即文件指针当前位置
seek(offset, whence) 移动文件读取指针到指定位置
offset 偏移量 表示要移动的字节数
whence 起始位置,表示移动字节的参考位置,默认是0,0代表文件从开头作为参考位置,1代表当前位置作为参考位置 2代表将文件结尾作为参考位置
seek(0,0) 会将文件指针移到开头

with open

作用:代码执行完,系统自动调用f.close(),可以省略文件关闭步骤

with open("./file/test.txt", 'w+') as f :
    f.write("hhhhh")
    print(f.closed)
print(f.closed)
--------------------------------
False
True

类似于java的写法,出了try代码块 流自动关闭

try (BufferedWriter f = new BufferedWriter(new FileWriter("./file/test.txt"))) {
   f.write("hello");
} catch (IOException e) {
   e.printStackTrace();
}

编码格式

with open("./file/test.txt", 'w+', encoding='utf-8') as f :
    f.write("张三  18")
    f.seek(0,0)
    print(f.read())
-------------------------------------------
张三  18

OS模块 目录操作

import os
# 文件重命名
os.rename("./file/test.txt", './file/zhangSan.txt')
# 删除文件
os.remove('./file/zhangSan.txt')
# 创建文件夹
os.mkdir('wenjianjia')
# 删除文件夹
os.rmdir('wenjianjia')
# 获取当前目录
os.getcwd()
# 获取目录列表 默认是当前目录列表(当前层级全部的文件目录)
os.listdir()
# 获取上一级目录列表(上一级全部的文件夹目录)
os.listdir('../')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容