一. 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天的更多相关文章

  1. 撩课-Java每天5道面试题第13天

    撩课Java+系统架构点击开始学习 96.JDBC操作数据库的步骤 ? .加载数据库驱动 .创建并获取数据库链接 .创建jdbc statement对象 .设置sql语句 .设置sql语句中的参数(使 ...

  2. 撩课-Java每天5道面试题第15天

    撩课Java+系统架构点击开始学习 106.什么是Hibernate的并发机制?怎么去处理并发问题? a.Hibernate的Session对象是非线程安全的, 对于单个请求,单个会话, 单个的工作单 ...

  3. 撩课-Java每天5道面试题第10天

    撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...

  4. 撩课-Java每天5道面试题第9天

    撩课Java+系统架构 视频 点击开始学习 76.XML技术的作用? XML技术用于数据存储. 信息配置. 数据交换三方面. 可以将数据存储在XML中, 通过节点. 元素内容. 属性标示数据内容及关系 ...

  5. 撩课-Java每天5道面试题第8天

    撩课Java+系统架构 视频 点击开始学习 71.jsp有哪些内置对象?作用分别是什么? Page, pageContext, request, response, session, applicat ...

  6. 撩课-Java每天10道面试题第7天

    撩课Java+系统架构 视频 点击开始学习 61.什么是并发修改异常? 什么是并发修改异常: 当我们在遍历实现了collection接口 与iterator接口的集合时(List.Set.Map), ...

  7. 撩课-Java每天10道面试题第4天

    撩课Java+系统架构 视频 点击开始学习 31.静态变量和实例变量的区别? 静态变量也叫类变量, 这种变量前加了static修饰符. 可以直接用类名调用, 也可以用对象调用, 而且所有对象的同一个类 ...

  8. 撩课-Python-每天5道面试题-第8天

    一. 解释下什么是闭包? 有怎样的场景作用? 概念 在函数嵌套的前提下 内层函数引用了外层函数的变量(包括参数) 外层函数, 又把 内层函数 当做返回值进行返回 这个内层函数+所引用的外层变量, 称为 ...

  9. 撩课-Python-每天5道面试题-第6天

    一. 函数的概念是什么? 在Python中如何定义?使用场景是什么? 概念 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就 ...

随机推荐

  1. indexOf用法

    例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...

  2. httpclient org.apache.http.NoHttpResponseException: host:端口 failed to respond 错误原因和解决方法

    原因:httpclient 之前与服务端建立的链接已经失效(例如:tomcat 默认的keep-alive timeout :20s),再次从连接池拿该失效链接进行请求时,就会保存. 解决方法:官方链 ...

  3. 【文文殿下】浅谈KMP算法next数组与循环节的关系

    KMP算法 KMP算法是一种字符串匹配算法,他可以在O(n+m)的时间内求出一个模式串在另一个模式串下出现的次数. KMP算法是利用next数组进行自匹配,然后来进行匹配的. Next数组 Next数 ...

  4. lamp-linux2

    LAMP编程之Linux(2) 一.进阶指令 1.du指令 作用:du表示directory used,显示出目录所占的磁盘空间大小的情况. 语法:#du -sh 目录路径 选项说明: -s:表示su ...

  5. placeholder插件详解

    placeholder插件是用来实现input或者textarea文本框显示默认文字的功能,当获得焦点时,默认文字消失.用户按删除键,把输入的字符删除掉,并失去焦点时,默认文字又出现等功能.使用此插件 ...

  6. [Re:从零开始的分布式] 0.x——分布式锁概述

    为什么需要分布式锁 Martin Kleppmann是英国剑桥大学的分布式系统的研究员,Martin认为一般我们使用分布式锁有两个场景: 效率:使用分布式锁可以避免不同节点重复相同的工作,这些工作会浪 ...

  7. gradle 打包 jar (一波三折)

    第一次尝试,打包成功,运行失败 build.gradle 打包 jar { baseName 'testJar' from { //添加依懒到打包文件 //configurations.compile ...

  8. 在windows上添加cygwin右键

    来了一台新机器,装环境的时候,突然想直接在右键使用cygwin. 查了一些教程,基本大同小异,也算是有用,先贴一个链接: https://blog.csdn.net/yang_hong_/articl ...

  9. mono for android之文件系统与应用程序首选项(转)

    Aside from persistent files, your application might need to store cache data in a file. To do that, ...

  10. javascript中prototype与__proto__

    1.prototype:构造函数独有的属性: __proto__:每个对象都有一个名为__proto__的属性: 注意:每个构造函数(自带与自创)都有一个prototype的属性,构造函数的proto ...