撩课-Python-每天5道面试题-第9天
一. Python程序中, 文件的处理步骤是什么?
打开
open("文件","模式") 读写
2.1 读 f.read(字节数)
字节数默认是文件内容长度
下标会自动后移
f.readline([limit])
读取一行数据
limit: 限制的最大字节数
f.readlines()
会自动的将文件按换行符进行处理
将处理好的每一行组成一个列表返回
for in
可以直接遍历 f 本身
也可以遍历行列表 2.2 写 f.write("内容")
返回值是写入的字节长度 关闭 f.close()
关闭文件 为什么需要关闭?
打开状态, 会占用系统资源
会把缓冲区内容清空到磁盘文件中
二. 文本打开时设置的模式有哪些? 分别代表什么意思?
基础模式
r
以只读方式打开文件, 这是默认模式
文件的指针将会放在文件的开头
注意: 文件不存在, 会报错
w
以只写方式打开文件
文件的指针将会放在文件的开头
所以, 写入的新内容, 会覆盖旧的内容
注意: 文件不存在, 会自动创建一个新文件
a
以追加方式(只写)打开文件
文件的指针将会放在文件结尾
所以, 写入的内容, 会新增到文件末尾
注意:文件不存在, 会自动创建一个新文件
组合模式-增加b
rb
wb
ab 以二进制格式进行操作文件读写
如果文件是二进制文件, 则选择此项
例如: 图片, 视频, 音频 ... 组合模式-增加+
r+
w+
a+
rb+
rw+
ra+
代表都是以 "读写模式" 进行打开
其他特性基本和 + 前面的模式一致
但是关于部分操作, 有细节区别
三. os模块中提供的常用文件操作?
模块
import os
信息获取操作
.closed: 返回true如果文件已被关闭,否则返回false
.name: 返回文件的名称
其他操作
3.1 重命名
os.rename(‘old_name’, 'new_name')
3.2 删除
os.remove('文件名')
3.3 创建文件夹
os.mkdir("文件夹名称")
3.4 获取当前目录
os.getcwd()
3.5 改变默认目录
os.chdir("目标目录")
3.6 获取目录列表
os.listdir("./")
四. 代码实现: 大文件拷贝操作
注意: 不能一次性读取大文件内容, 容易造成内存峰值
import os os.chdir("files") # . 只读模式, 打开要复制的文件
# 追加模式, 打开副本文件 source_file = open("d.txt", "r", encoding="utf-8")
dst_file = open("d_bat.txt", "a", encoding="utf-8") # . 从源文件中读取内容
# 写入到目标文件中,
# 错误写法: 针对于大文件, 不应一次性读取全部内容
# # content = source_file.read()
# # dst_file.write(content) while True:
content = source_file.read()
if len(content) == :
break
print("----", content)
dst_file.write(content) # . 关闭源文件和目标文件
source_file.close()
dst_file.close()
五. 代码实现: 假设一个文件夹中有很多不同格式的文件, 要求: 将不同格式的文件, 划分到不同格式的文件夹下;
例如: a.png b.txt c.avi d.png
划分后:
png文件夹: a.png d.png
txt文件夹: b.txt
avi文件夹: c.avi
import os
import shutil # 目标路径
path = "files2" if not os.path.exists(path):
exit() os.chdir(path)
file_list = os.listdir("./")
# print(file_list) # . 遍历所有的文件(名称)
for file_name in file_list:
# print(file_name)
# . 分解文件的后缀名
# 2.1 获取最后一个.的索引位置 xx.oo.txt
index = file_name.rfind(".")
if index == -:
continue
# print(index)
# 2.2 根据这个索引位置, 当做起始位置, 来截取后续的所有字符串内容
extension = file_name[index + :]
print(extension) # . 查看一下, 是否存在同名的目录
# . 如果不存在这样的目录 -> 直接创建一个这样名称的目录
# , 目录存在 -> 移动过去
if not os.path.exists(extension):
os.mkdir(extension) shutil.move(file_name, extension)
撩课-Python-每天5道面试题-第9天的更多相关文章
- 撩课-Java每天5道面试题第13天
撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...
- 撩课-Java每天5道面试题第15天
撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...
- 撩课-Java每天5道面试题第10天
撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...
- 撩课-Java每天5道面试题第9天
撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...
- 撩课-Java每天5道面试题第8天
撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...
- 撩课-Java每天10道面试题第7天
撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...
- 撩课-Java每天10道面试题第4天
撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...
- 撩课-Python-每天5道面试题-第8天
一. 解释下什么是闭包? 有怎样的场景作用? 概念 在函数嵌套的前提下 内层函数引用了外层函数的变量(包括参数) 外层函数, 又把 内层函数 当做返回值进行返回 这个内层函数+所引用的外层变量, 称为 ...
- 撩课-Python-每天5道面试题-第6天
一. 函数的概念是什么? 在Python中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...
随机推荐
- “全栈2019”Java第一百一十一章:内部类可以被覆盖吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 设置视口中心点setViewCenter
ads_point pt; ads_name ent,ss; //切换到模型空间 acedMspace(); if (RTNORM != acedGetPoint(NULL,_T("\n选择 ...
- jquery源码解析:addClass,toggleClass,hasClass详解
这一课,我们将继续讲解jQuery对元素属性操作的方法. 首先,我们先看一下这几个方法是如何使用的: $("#div1").addClass("box1 box2&quo ...
- Java NIO学习与记录(六): NIO线程模型
NIO线程模型 上一篇说的是基于操作系统的IO处理模型,那么这一篇来介绍下服务器端基于IO模型和自身线程的处理方式. 一.传统阻塞IO模型下的线程处理模式 这种处理模型是基于阻塞IO进行的,上一篇讲过 ...
- 我也学习JAVA多线程-join
在工作中,挺少遇到join关键字,但很多多线程资料和面试过程中,初中级开发工程师总会遇到join. 今天一起学习下join. join的作用:等待指定的时间(当为0时,一直等待),直到这个线程执行结束 ...
- php 判断两个时间段是否有交集
一开始,没啥思路,全靠百度,记录一下哈 public function demo(){ //例子 $astart = strtotime("1995-06-16 12:00:00" ...
- java无符号Byte
1.无符号byte, 实现了将byte(-128~127) 转换为 (0~255) class UnsignedByte { private short value; private byte raw ...
- 内核诊断(1)interrupt took too long
The linux kernel gathers samples using 'perf' performance monitor without affecting the latencies. T ...
- Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
首先找到出现错误的原因: redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snapshots, but ...
- SVN linux 服务器端配置
一. SVN 简单介绍 Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository ...