撩课-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中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...
随机推荐
- KVM到KVM之v2v迁移
1.源KVM虚拟主机node1 (1).查看源KVM虚拟主机上的虚拟机列表,本文计划将oeltest01虚拟机迁移到其它KVM虚拟主机中. (2).查看oeltest01虚拟机磁盘文件位置/data/ ...
- Windows安装Node.js报错:2503、2502的解决方法
以管理员身份用msiexec安装 1.以管理员身份运行cmd命令 (Win + X, A) 以管理员身份运行cmd 2.cd到自己msi路径 用msiexec安装 用msiexec安装nodejs
- AngularJS源码解析2:注入器的详解
上一课,没有讲createInjector方法,只是讲了它的主要作用,这一课,详细来讲一下这个方法.此方法,最终返回的注册器实例对象有以下几个方法: invoke, instantiate, get, ...
- 爬虫3:requests库
一个简单易用的http库,多用于第一步,爬取网站源码 简单例子 import requests response = requests.get('https://www.baidu.com ...
- [原]时间格式化hh:mm:ss和HH:mm:ss区别
hh:mm:ss 按照12小时制的格式进行字符串格式化 如果时间处于00:00:00——12:59:59,则返回的字符串正常 如果时间处于13:00:00——23:59:59,则返回的字符串是实际 ...
- MySQL , MHA , Haproxy 配置
1. 基本架构 2. 读端口影射 3. 写端口影射 进行一个Health Check MHA Manager对Master节点MySQL 进行存活监控 读FailOver 1 读FailOver 2 ...
- [原创]SSH 隧道转发
目录 简介 本地SSH隧道 远程SSH隧道 FAQ 免密码登陆 自动重连 简介 建立ssh隧道常用于, 通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器. 项 ...
- js数字格式化为千分位
方法1: 浏览器自带的一个方法 const num=12345.6789 num.toLocaleString();=>"12,345.679" 方法2: 正则匹配 func ...
- Mac下使用Wine安装正则表达式工具RegexBuddy 4
下载: (链接: https://pan.baidu.com/s/1bzRae6 密码: b5d3) 安装: 1.安装Wine 参考:http://www.cnblogs.com/EasonJim/p ...
- Mac下一台电脑管理多个SSH KEY(转)
一.关于ssh是什么? http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 二.需求: 一台电脑上(Mac os)管理多个ssh ...