7 Python文件、文件夹、word及excel操作

news2024/11/18 1:29:18

0 建议学时和要求

4学时
掌握os和os.path模块对文件和文件夹操作的函数
掌握shutil模块对文件和文件夹操作的函数
掌握扩展库openpyxl对Excel文件的操作

1 文件的高级操作

1.1 文件的概念及分类

文本文件

  • 文本文件可以使用记事本、gedit、ultraedit等字处理软件直接进行显示和编辑,并且人类能够直接阅读和理解。
  • 文本文件由若干文本行组成,包含英文字母、汉字、数字字符串、标点符号等。
  • 扩展名为txt、log、ini、c、cpp、py、pyw、html、js、css的文件都属于文本文件。

二进制文件

  • 数据库文件、图像文件、可执行文件、动态链接库文件、音频文件、视频文件、Office文档等均属于二进制文件。
  • 二进制文件无法用记事本或其他普通字处理软件正常进行编辑,人类也无法直接阅读和理解,需要使用正确的软件进行解码或反序列化之后才能正确地读取、显示、修改或执行。

1.2 上下文管理语句with

在实际开发中,读写文件应优先考虑使用上下文管理语句with。关键字with可以自动管理资源,不论因为什么原因跳出with块,总能保证文件被正确关闭。

with open(filename, mode, encoding) as fp: #通过文件对象fp读写文件内容的语句

【例1】将字符串写入使用UTF8编码格式的文本文件,然后再读取并输出。

s ='1234567\nABCDEFG'
with open('sample.txt', 'w', encoding='utf8') as fp:
    fp.write(s)

with open(‘sample.txt', 'r',  encoding='utf8') as fp:
    s=fp.read()

【例2】遍历并输出文本文件的所有行内容

with open('sample.txt', encoding='utf8') as fp: 
    for line in fp:       #遍历所有行
        print(line)

【例3】读取Python安装目录中news.txt文件的内容,然后输出其中第100个字符开始的50个字符。

with open('news.txt', 'r', encoding='utf8') as fp:
	content = fp.read()    #读取所有内容
	print(content[100:150])

【例4】读取文本文件data.txt(文件中每行存放一个整数)中所有整数,按升序排序后再写入文本文件data_new.txt中。
在这里插入图片描述

2 文件夹操作

2.1 文件与文件夹操作—os模块

标准库,不需安装
在这里插入图片描述
在这里插入图片描述

import os.path as path
fileName = 'C:\\Python38\\python.exe'
path.isfile(fileName)              #判断是否为文件
# True
path.isdir(fileName)               #判断是否为文件夹
# False
path.basename(fileName)            #获取路径中最后一部分的名称
# 'python.exe'
path.dirname(fileName)             #最后一个路径分隔符前面的部分
# 'C:\\Python38'
path.splitext(fileName)            #分隔文件扩展名
# ('C:\\Python38\\python', '.exe')

【例1】遍历指定文件夹的所有子文件夹和文件

from os import listdir
from os.path import join, isfile, isdir

# 遍历文件夹,如果是文件就直接输出如果是文件夹,就输出显示,然后递归遍历该文件夹
def listDirDepthFirst(directory):
    for subPath in listdir(directory): #listdir()列出的是相对路径,需要使用join()把父目录连接起来
            path = join(directory, subPath)
      if isfile(path):
          print(path)
      elif isdir(path):
          print(path)
          listDirDepthFirst(path)

listDirDepthFirst("毕业晚会节目院系提交excel")

2.2 shutil模块

标准库,不需安装
在这里插入图片描述
【例1】把C:\dir1.txt文件复制到D:\dir2.txt

import shutil
shutil.copyfile('C:\\dir1.txt', 'D:\\dir2.txt')

【例2】使用shutil模块的方法删除文件夹

shutil.rmtree('D:\\unpack')

【例3】使用shutil的copytree()函数复制文件夹,忽略扩展名为py和以“新”开头的文件和子文件夹

from shutil import copytree, ignore_patterns
copytree('C:\\python38\\test', 'D:\\des_test',
             ignore=ignore_patterns('*.py', '新*'))

【例4】自动检测U盘插入并把U盘上所有文件复制到本地硬盘上

from shutil import copytree
from psutil import disk_partitions
while True:
  sleep(3)
  for item in disk_partitions(): #检查所有驱动器
  	if 'removable' in item.opts: #发现可移动驱动器
  		driver = item.device
  		print(‘Found USB disk:, driver) #输出可移动驱动器符号
  		break
  	else:
  		continue
  	break
copytree(driver, 'D:\\usbdriver') #复制根目录
print('优盘已复制')

2.3 课后延伸

把文件夹<毕业晚会节目>内的excel文件复制到<汇总>文件夹里

3 Excel操作

3.1 Excel读文件操作

安装

pip install openpyxl -i https://pypi.douban.com/simple

【例1】打开excel并获取单元格数据

from openpyxl import load_workbook
wb = load_workbook('d:\\1.xlsx')
sheet1 =wb['login'] #打开login表
# sheet1=wb.worksheets[0]  #打开第一张表
cellA1=sheet1['A1'].value #获取单元格数据
# cellA1=sheet1.cell(1,1).value  #获取单元格数据
wb.close()

3.2 Excel写文件操作

【例1】单元格赋值

import openpyxl
wb = openpyxl.Workbook()
sheet1 = wb.worksheets[0]
sheet1.append(['A1', 'B1'])  #整行赋值
sheet1.cell(2,2).value=42   #单个单元格赋值
wb.save('1.xlsx')

【例2】有一文件data.xlsx,要求使用openpyxl库读取并输出Excel文件中D列所有单元格内容,如果单元格包含公式则输出公式的计算结果
在这里插入图片描述

from openpyxl import load_workbook
#打开Excel文件,获取WorkSheet
ws = load_workbook('data.xlsx', data_only=True).worksheets[0]
#遍历Excel文件所有行,假设下标为3的列中是公式
for row in ws.rows:
	print(row[3].value)

【例3】已知有一个文件data.xlsx,要求在第一个工作表中第3列之前插入一列,并保存为data_new.xlsx文件

from openpyxl import load_workbook
ws = load_workbook('data.xlsx').worksheets[0]
ws.insert_cols(3)   #在第3列之前插入一列
for index, row in enumerate(ws.rows): #填入数据
	if index == 0:
		row[2].value = '新字段'
	else:
		row[2].value = index
wb.save('data_new.xlsx')

3.3 课后延伸

【题1】创建一个名为data.xlsx的excel文件,内部数据为:
在这里插入图片描述
【题2】当前文件夹中有若干扩展名为.xlsx的Excel文件,把文件内容合并
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/371972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32设备驱动-DS1264数字温度传感器驱动

DS1264数字温度传感器驱动 1、DS1264介绍 DS1624 由两个独立的功能单元组成:一个 256 字节非易失性 E2 存储器和一个直接数字温度传感器。 非易失性存储器由 256 字节的 E2 存储器组成。 该存储器可用于存储用户希望的任何类型的信息。 这些内存位置通过 2 线串行总线访问。…

007永磁电机控制方式:别张嘴就FOC,其他常规控制方式也是伺服人的基本功

在读本篇文&#xff0c;我想做个小调查。到目前为止&#xff0c;你掌握的或者是你了解到的控制永磁同步电机的方式都有哪些&#xff1f;我想&#xff0c;你大概张口就说FOC控制吧。没错&#xff0c;FOC控制是我们日常生活中所见到的最普遍的永磁同步电机的控制方式。当然在本专…

微信电脑版字体模糊(或文字太小)怎么调整

文章目录第一步&#xff1a;设置屏幕缩放125%第二步&#xff1a;文本大小设置为125%第三步&#xff1a;微信设置--通用--勾选“适配系统缩放比例”第四步&#xff1a;微信高DPI缩放行为设置&#xff08;关键&#xff09;ClearType勾选&#xff08;可选&#xff09;笔者遇到这个…

【模板】线段树 2

题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面三种操作&#xff1a; 将某区间每一个数乘上 xxx 将某区间每一个数加上 xxx 求出某区间每一个数的和 输入格式 第一行包含三个整数 n,m,pn,m,pn,m,p&#xff0c;分别表示该数列数字的个数、操作的总个数…

计算机网络笔记(复试准备)第一章

计算机网络笔记&#xff08;复试准备&#xff09; 第一章 网络&#xff0c;互联网与因特网 网络由若干个结点和连接这些结点的链路组成 多个网络通过路由器连接起来这也就形成了一个更大的网络即是我们熟知的互联网也就是“网络的网络” 因特网是世界上最大的网络 问&#xf…

Open-Vocabulary Object Detection Using Captions论文讲解

文章目录一、论文前言二、提出原因三、论文的核心四、论文讲解4.1 论文流程4.2 OVD与之前相关的setting4.3 结果对比一、论文前言 目标检测是人工智能最突出的应用之一&#xff0c;也是深度学习最成功的任务之一。 然而&#xff0c;尽管深度对象检测取得了巨大进步&#xff0…

MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot + Bee)

MongoDB在银行海量历史订单交易数据查询中的应用(Spring boot Bee) 近年来,随着各种便捷支付方式的普及,银行账户交易数据呈现爆炸式增长,同时数据模型也在不断变化,传统关系型数据库已难以满足这种海量的、模式灵活、高可用、高性能的数据存储和查询需求。通过对银行历史交易…

【编程入门】应用市场(php版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目&#xff0c;使…

【MySQL】索引常见面试题

文章目录索引常见面试题什么是索引索引的分类什么时候需要 / 不需要创建索引&#xff1f;有什么优化索引的方法&#xff1f;从数据页的角度看B 树InnoDB是如何存储数据的&#xff1f;B 树是如何进行查询的&#xff1f;为什么MySQL采用B 树作为索引&#xff1f;怎样的索引的数…

033_SS_Inversion-Based Creativity Transfer with Diffusion Models

下载地址&#xff1a;Arxiv 2022.11.23 Code地址&#xff1a;https://github.com/zyxElsa/creativity-transfer 1. Introduction Motivations 以前的任意示例引导的艺术图像生成方法&#xff08;比如风格迁移&#xff09;通常无法控制形状变化或传达语义元素。而预训练的text…

【Linux | ELK 8.2】搭建ELKB集群Ⅰ—— 实验环境说明和搭建Elasticsearch集群

目录1. 实验环境1.1 实验工具1.2 操作系统1.3 架构版本、IP地址规划与虚拟机配置要求1.4 拓扑图1.5 其他要求2. 实验步骤2.1 安装Elasticsearch&#xff08;单节点&#xff09;&#xff08;1&#xff09;检查系统jdk版本&#xff08;2&#xff09;下载elasticsearch&#xff08…

格式化串漏洞

格式化字符串漏洞本身并不算缓冲区溢出漏洞&#xff0c;这里作为比较典型的一类漏洞进行简单介绍。为了能够将字符串、变量、地址等数据按照指定格式输出&#xff0c;通常使用包含格式化控制符的常量字符串作为格式化串&#xff0c;然后指定用相应变量来代替格式化串中的格式化…

进程管理之基本概念

目录 关于进程的基本概念 进程描述符 查看进程 进程标识 进程的生命周期 僵尸进程、孤儿进程 写时拷贝技术 fork()函数 vfork()函数 终止进程 进程优先级和权重 进程地址空间 关于进程的基本概念 进程和程序是操作系统领域的两个重要的概念&#xff0c;进程是执行…

LeetCode 145. 二叉树的中序遍历

LeetCode 145. 二叉树的中序遍历 难度&#xff1a;easy\color{Green}{easy}easy 题目描述 给你一棵二叉树的根节点 rootrootroot &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1]示例 2&#xff1a…

mitmproxy使用总结

mitmproxy is a free and open source interactive HTTPS proxy. 这官网上的一句话说明mitmproxy的身份&#xff0c;MITM 即中间人攻击&#xff08;Man-in-the-middle attack&#xff09;&#xff0c;与charles、fidder之类的抓包工具不同的是可以增加一些自定义处理的扩展脚本…

aws appmesh 在ec2上部署和使用appmesh

参考资料 Getting started with AWS App Mesh and Amazon EC2 之前的文章中我们已经介绍了aws的服务网格场频appmesh&#xff0c;并且在eks环境中进行了部署和简单功能的测试。由于eks环境较为复杂&#xff0c;本文在ec2环境下手动配置appmesh网格环境 需求&#xff1a; 两个…

【Spring 基础】

【Spring 基础】 一、 Spring 介绍 1. 简述 Spring 技术是 JavaEE 开发必备技能&#xff0c;企业开发技术选型专业角度 简化开发&#xff0c;降低企业级开发的复杂性 IoCAOP 事务处理 框架整合&#xff0c;高效整合其他技术&#xff0c;提高企业级应用开发与运行效率 MyBat…

Linux内核中的软中断、tasklet和工作队列

软中断、tasklet和工作队列并不是Linux内核中一直存在的机制&#xff0c;而是由更早版本的内核中的“下半部”&#xff08;bottom half&#xff09;演变而来。下半部的机制实际上包括五种&#xff0c;但2.6版本的内核中&#xff0c;下半部和任务队列的函数都消失了&#xff0c;…

5M240ZT144C5N【CPLD】5M240ZT144I5N,5M570ZT100I5N满足低功耗设计

MAX V设备系列的特点&#xff1a;低成本、低功耗、非易失性CPLD架构即时启动(0.5 ms或更短)配置时间待机电流低至25A&#xff0c;快速下电/复位操作快速传播延迟和时钟到输出时间内部振荡器模拟RSDS输出支持&#xff0c;数据速率高达200 Mbps模拟LVDS输出支持&#xff0c;数据速…

手把手教你做微信公众号

手把手教你做微信公众号 微信公众号可以通过注册的方式来建立。 1.进入微信公众平台 首先&#xff0c;在浏览器中搜索微信公众号&#xff0c;网页第一个就是&#xff0c;如下图所示&#xff0c;我们点进去。 2.注册微信平台账号 进入官网之后&#xff0c;如下图所示&#…