撩课-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中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...
随机推荐
- 从Oracle官网学习oracle数据库和java
网上搜索Oracle官网:oracle官网 进入Oracle官网 点击menu-Documentation-Java/Database,进入Oracle官网的文档网站 首先是Java,可以看到Java ...
- [Virtualization] Virtualbox 转换磁盘格式(vboxmanage) disk to VMware
一.需求 今天去参加网络安全的培训,Engineer 分享了一份 Virtual box 虚拟机.但是只有我拷取了这份文件,小伙伴们都是装的 VMware Workstation.那么该如何将vdi转 ...
- 把序列中的N个元素赋值给多个变量
说明: python中序列和散列 序列:可通过偏移量来进行切片的对象.列表.元组.字符串都属于序列. 散列:无法通过偏移量来进行切片的对象.比如 集合.字典 一. 变量的数量跟序列元素的个数一样 1. ...
- Java中常见的jar包及其主要用途
jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周 ...
- ubuntu 14.04网卡配置以及关闭防火墙
一.Ubuntu网卡配置如下: 在文件/etc/network/interfaces中进行以下配置 auto lo iface lo inet lookback auto eth0 iface eth ...
- [转] String to Date conversion in hive - 在 Hive 中各种字符串转换成日期格式
[From] http://bigdataprogrammers.com/string-date-conversion-hive/ Please refer below table to conver ...
- 计算几何误差修正cmp
//计算几何误差修正 Math.EPS=0.00000001; //判断x的符号 Math.cmp=function(x) { if(Math.abs(x)<Math.EPS)return 0; ...
- golang (4) golang 操作mongdb
1. 数据按照时间聚合操作 1.1 正常的数据结构 { "_id" : ObjectId("5cac8d7b1202708adf5d4b64"), " ...
- Vue.js 动态挂载子组件
直接来实例 父组件 <template> <div> <div :is="sub.content" :ref="sub.name" ...
- mono for android读书笔记之硬件编程(转)
本章将会介绍: 传感器的API 加速器编程,设备的方向,近场检测 网络编程 蓝牙编程 上述的技术的应用场景很多,比如: 1.检测当前的网络是否可用,并提醒用户,检测当前的网络类型,比如Wifi.3G. ...