当前位置: 首页 > news >正文

python自动化办公(一)

本文代码参考其他教程书籍实现。

文章目录

  • 文件读写
    • open函数
    • 读取文本文件
    • 写入文本文件
  • 文件和目录操作
    • 使用os库
    • 使用shutil库

文件读写

open函数

open函数有8个参数,常用前4个,除了file参数外,其他参数都有默认值。file指定了要打开的文件名称,应包含文件路径,不写路径则表示文件和当前py脚本在同一个文件夹。buffering用于指定打开文件所用的缓冲方式,默认值-1表示使用系统默认的缓冲机制。文件读写要与硬盘交互,设置缓冲区的目的是减少CPU操作磁盘的次数,延长硬盘使用寿命。encoding用于指定文件的编码方式,如GBK、UTF-8等,默认采用UTF-8,有时候打开一个文件全是乱码,这是因为编码参数和创建文件时采用的编码方式不一样。

mode指定了文件的打开模式。打开文件的基本模式包括r、w、a,对应读、写、追加写入。附加模式包括b、t、+,表示二进制模式、文本模式、读写模式,附加模式需要和基本模式组合才能使用,如 “rb”表示以二进制只读模式打开文件,“rb+”表示以二进制读写模式打开文件。

要注意的是,凡是带w的模式,操作时都要非常谨慎,它首先会清空原文件,但不会有提示。凡是带r的文件必须先存在,否则会因找不到文件而报错。

新建文本文件python_zen.txt,将python之禅文本(import this 返回的文本)复制粘贴。保存为UTF-8无BOM编码格式
在这里插入图片描述
常见的对象方法及其作用说明

方法作用
read将文件读入字符串中,也可以读取指定字节
readline读入文件的一行到字符串中
readlines将整个文件按行读入列表中
write向文件中写入字符串
writelines向文件中写入一个行数据列表
close关闭文件
flush把缓冲区的内容写入硬盘
tell返回文件操作标记的当前位置,以文件的开头为原点
next返回下一行,并将文件操作标记位移到下一行
seek移动文件指针到指定位置
truncate截断文件

读取文本文件

# 使用open函数打开文件
f=open('./python_zen.txt',mode='r',encoding='utf-8')
type(f)#查看类型
_io.TextIOWrapper
# 使用read方法将文件读入字符串中
texts=f.read()
print(texts)#输出文件全部内容

在这里插入图片描述

f.seek(0)#移动文件指针到文件开始处
0
# 使用readline方法读入文件的一行到字符串
texts=f.readline()
print(texts)

在这里插入图片描述

# 继续使用readline方法读取
texts=f.readline()
print(texts)#第二行该行为空行

在这里插入图片描述

# 继续使用readline方法读取
texts=f.readline()
print(texts)#第三行

在这里插入图片描述

# readline方法每次只读取一行,它常常与for循环配合使用
f.seek(0)
for line in f:print(line,end='')

在这里插入图片描述

# readlines方法读取效果
f.seek(0)
texts=f.readlines()
print(texts)

在这里插入图片描述
readlines的效果是一次性读取整个文件,并自动将文件内容按行分解成列表。
读取完毕后要用close方法关闭文件。

f.close()

在进行Python文件的读取或者写入的时候,都需要调取close方法来关闭文件,
前者是避免占用内存,后者是保证将内容顺利写入目标文件中。
有些时候我们会忘记调用close方法,或者运行中途代码出错,导致未运行close方法。
为了避免这种情况,可以使用try…finally…结构。

try:f=open(r'./python_zen.txt','r')...
finally:f.close()

这种结构简单地说:无论异常是否发生,在程序结束前,finally中的语句都会被执行。

# 此外,可以用上下文管理器with语句,确保不管使用过
# 程中是否发生异常都会执行必要的“清理”操作,以释放资源。
with open(r'./python_zen.txt','r') as f:texts=r.read()...

统计单词出现的频率

from collections import Counter
lists=[]
punctuation=',。!?、()【】<>《》=:+-*—“”...\n'#跳过其他字符
with open('./python_zen.txt',mode='r',encoding='utf-8') as f:for line in f:for word in line.split(' '):#如果统计字母则去掉[.split(' ')]即可if word not in punctuation:lists.append(word)
counter=Counter(lists)
print(counter)

在这里插入图片描述

写入文本文件

# 写入一个文本文件
f=open(r'./python_zen_write.txt',mode='w',encoding='utf-8')
#首尾文本紧跟引号可以防止输入多余的空行
f.write(
'''The Zen of Python, by meBeautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.'''
)
f.close()

在这里插入图片描述

# 有时,我们需要逐步写入内容,每次只写一句话,
# 这时不能用w模式,w会覆盖之前的文本内容,而应该使用追加模式a
f=open(r'./python_zen_write.txt',mode='a',encoding='utf-8')
f.write('这是python之禅的内容')
#我们尝试不运行f.close()会发生什么

打开python_zen_write.txt文件查看,想要追加写入的内容并没有写入。
在这里插入图片描述
当写文件时,操作系统往往不会立刻把数据写入硬盘,而是先放入内存中缓存起来,然后再陆续写入。只有调用close方法时,操作系统才保证把没有写入的数据全部写入硬盘。忘记调用close方法的后果是,虽然建立了文件,但是数据并没有写入文件。

# 可以使用flush方法,强制将缓存的数据写入文件
f.flush()

可以看到追加内容已经写入
在这里插入图片描述
但是似乎不是换行后追加写入,加个\n换行就行。

# 要在文件开始位置插入一句话
# file.seek(off, whence)
# whence(0代表文件开始位置,1代表当前位置,2代表文件末尾)偏移off字节
#文章开头介绍过,r+,读写模式,忘了的回到文章开头看
with open('./python_zen_write.txt',mode='r+',encoding='utf-8') as f:content=f.read()f.seek(0,0)f.write('开始位置:python之禅\n'+content)

在这里插入图片描述
试试末尾追加写入

with open('./python_zen_write.txt',mode='r+',encoding='utf-8') as f:f.seek(0,2)f.write('\n末尾位置:结束语')

在这里插入图片描述

文件和目录操作

使用os库

import os

常用的操作函数

函数说明
getcwd获取当前工作目录,即当前python脚本所在的目录路径
listdir列出指定目录下的所有文件和子目录,包括隐藏文件
mkdir创建目录
unlink删除文件
remove删除文件
rmdir删除空目录
removedirs若目录为空,则删除,并递归到上一级目录,若上一级目录为空,也删除
rename重命名文件
stat获取一个文件的属性及状态信息

os.path可以调用ntpath.py模块

os.path

在这里插入图片描述
常用的操作函数

函数说明
abspath返回规范化的绝对路径
basename返回最后的文件名部分
dirname返回目录部分
split将文件名分割成目录和文件名
splitext分离扩展名
join将多个路径组合起来,以字符串中含有/的第一个路径开始拼接
getctime返回文件或目录的创建(复制到某个目录)的时间
getatime访问时间,读一次文件的内容,这个时间就会更新
getmtime修改时间,修改一次文件的内容,这个时间就会更新
getsize获取文件大小
isabs如果path是绝对路径,返回True
exists如果path存在,则返回True;如果path不存在,则返回False
isdir如果path是一个存在的目录,则返回True,否则返回False
isfile如果path是一个存在的文件,则返回True,否则返回False
os.getcwd()#当前工作目录

在这里插入图片描述

# 修改工作目录
os.chdir('D:\\Anaconda3\\AnacondaProjects')
print(os.getcwd())
os.chdir('D:\\Anaconda3\\AnacondaProjects\\python自动化办公')
print(os.getcwd())

在这里插入图片描述

os.listdir()#获取当前工作目录的全部文件和子目录

在这里插入图片描述

# 遍历文件目录
# os.listdir()方法不能获取子目录里面的文件,
# 要进一步获取则需要用到os.walk方法。
path=r'D:\Anaconda3\AnacondaProjects\python自动化办公'
for foldName,subfolders,filenames in os.walk(path):for filename in filenames:print(foldName,filename)#foldName文件目录,filename文件名

在这里插入图片描述

# 拆分绝对路径文件名
path=r'D:\Anaconda3\AnacondaProjects\python自动化办公\python_zen.txt'
print(os.path.split(path))
print(os.path.dirname(path))
print(os.path.basename(path))
print(os.path.splitext(path))

在这里插入图片描述

#组合文件名
print(os.path.join(os.getcwd(),os.path.basename(path)))

在这里插入图片描述

# 获取文件属性
path=r'D:\Anaconda3\AnacondaProjects\python自动化办公\python_zen.txt'
print(os.path.getctime(path))#创建时间
print(os.path.getmtime(path))#修改时间
print(os.path.getatime(path))#访问时间

在这里插入图片描述
上述格式的时间表示从1970年1月1日到现在已经经过多少秒,要把它转换成可以理解的时间要使用time模块。

import time
print(time.ctime(os.path.getctime(path)))#创建时间
print(time.ctime(os.path.getmtime(path)))#修改时间
print(time.ctime(os.path.getatime(path)))#访问时间

在这里插入图片描述
这里的创建时间,并不是指这个文件内容的原创时间,如果文件从别处复制过来,那就是复制的时间。

print(os.path.getsize(path))#查看文件大小

在这里插入图片描述

# stat方法获取文件的属性及状态信息
print(os.stat(path))

在这里插入图片描述

# 输出文件大于0且后缀为.txt的文件名
for file in os.listdir():path=os.path.abspath(file)filesize=os.path.getsize(path)if filesize>0 and os.path.splitext(path)[-1]=='.txt':print(os.path.basename(path))

在这里插入图片描述
同理,也可以删除符合某些条件的文件os.remove(file)

# 新建一个文本文件
with open('new.txt','w',encoding='utf-8') as f:f.write('一个新的txt文件')
for foldName,subfolders,filenames in os.walk(os.getcwd()):print('foldName:',foldName,'\n','subfolders:',subfolders,'\n','filenames:',filenames)

在这里插入图片描述

# 将当前目录及子目录所有new.txt文件改名为new2023.txt
for foldName,subfolders,filenames in os.walk(os.getcwd()):for filename in filenames:#不加这个筛选条件,则是更改所有文件文件名。也可加其他筛选条件if filename=='new.txt':abspath=os.path.join(foldName,filename)extension=os.path.splitext(abspath)[1]new_name=filename.replace(extension,'2023'+extension)os.rename(abspath,os.path.join(foldName,new_name))

使用shutil库

下篇文章python自动化办公(二)再继续写吧。

相关文章:

python自动化办公(一)

本文代码参考其他教程书籍实现。 文章目录文件读写open函数读取文本文件写入文本文件文件和目录操作使用os库使用shutil库文件读写 open函数 open函数有8个参数&#xff0c;常用前4个&#xff0c;除了file参数外&#xff0c;其他参数都有默认值。file指定了要打开的文件名称&a…...

LeetCode - 198 打家劫舍

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 题目描述 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装…...

简单粗暴的分布式定时任务解决方案

分布式定时任务1.为什么需要定时任务&#xff1f;2.数据库实现分布式定时任务3.基于redis实现1.为什么需要定时任务&#xff1f; 因为有时候我们需要定时的执行一些操作&#xff0c;比如业务中产生的一些临时文件&#xff0c;临时文件不能立即删除&#xff0c;因为不清楚用户是…...

蓝桥杯第五天刷题

第一题&#xff1a;数的分解题目描述本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。把 2019 分解成 3 个各不相同的正整数之和&#xff0c;并且要求每个正整数都不包含数字 2和 4&#xff0c;一共有多少种不同的分解方法&…...

Java数组的定义和使用(万字详解)

目录 ​编辑 一. 数组的基本概念 1、什么是数组 2、数组的创建及初始化 1、数组的创建 2、数组的初始化 3、数组的使用 &#xff08;1&#xff09;数组中元素访问 &#xff08;3&#xff09;遍历数组 二、数组是引用类型 1、初始JVM的内存分布 2、基本类型变量与引用类…...

【SpringBoot】自定义Starter

&#x1f6a9;本文已收录至专栏&#xff1a;Spring家族学习之旅 &#x1f44d;希望您能有所收获 一.概述 在使用SpringBoot进行开发的时候&#xff0c;我们发现使用很多技术都是直接导入对应的starter&#xff0c;然后就实现了springboot整合对应技术&#xff0c;再加上一些简…...

【C陷阱与缺陷】----语法陷阱

&#x1f4af;&#x1f4af;&#x1f4af; 要理解一个C程序&#xff0c;必须理解这些程序是如何组成声明&#xff0c;表达式&#xff0c;语句的。虽然现在对C的语法定义很完善&#xff0c;几乎无懈可击&#xff0c;大门有时这些定义与人们的直觉相悖&#xff0c;或容易引起混淆…...

虹科分享| 关于TrueNAS十问十答

上一篇文章我们向您介绍了虹科新品HK-TrueNAS企业存储&#xff0c;很多小伙伴会疑问到底什么是NAS存储&#xff0c;之前常用的磁盘、磁带属于什么存储架构&#xff0c;NAS存储好在哪里&#xff0c;什么时候使用NAS&#xff1f;今天我们整理了关于TrueNAS的十问十答&#xff0c;…...

Https 笔记

HTTP TLS TLS 的前身是 SSL 非对称加密的核心&#xff1a; 两个密钥&#xff08;公私&#xff09; https 需要第三方CA&#xff08;证书授权中心&#xff09;申请SSL证书以确定其真实性 证书种包含了特定的公钥和私钥 密钥交换 自己将私钥上锁后发给对方对方也上锁 在还回来…...

【Python+requests+unittest+excel】实现接口自动化测试框架

一、框架结构&#xff1a; 工程目录 二、Case文件设计 三、基础包 base 3.1 封装get/post请求&#xff08;runmethon.py&#xff09; 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if heade…...

MySQL终端的使用及其数据类型的使用

什么是数据库&#xff1f;数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。我们也可以将数据存储在文件中&#xff0c…...

长视频终局:一场考验资金储备的消耗战

赢者通吃&#xff0c;似乎已成为各行各业的常识&#xff0c;但事实真的是这样吗&#xff1f;20世纪70年代&#xff0c;石油价格高涨&#xff0c;在墨西哥湾油田拍卖中高价拍得油田的企业&#xff0c;要么亏损&#xff0c;要么收入低于预期&#xff0c;但仍然有无数企业在高价竞…...

javaEE初阶 — CSS 常用的属性

文章目录CSS 常用的属性1 字体属性1.1 设置字体家族 font-family1.2 设置字体大小 font-size1.3 设置字体粗细 font-weight1.4 文字倾斜 font-style2 文本属性2.1 文本颜色2.2 文本对齐2.3 文本装饰2.4 文本缩进2.5 行高3 背景属性3.1 背景颜色3.2 背景图片3.3 背景位置3.4 背景…...

【面试题】如何取消 script 标签发出的请求

大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库问题之前在业务上有这样一个场景&#xff0c;通过 script 标签动态引入了一个外部资源&#xff0c;具体方式是这样的const script document.…...

蓝桥杯嵌入式(G4系列):RTC时钟

前言&#xff1a; 关于RTC时钟的HAL库配置我也是第一次&#xff0c;之前都是用库函数的写法&#xff0c;这里写下这篇博客来记录一下自己的学习过程。 STM32Cubemx配置&#xff1a; 首先点击左侧的Timers的RTC&#xff0c;勾选以下选项 进入时钟树配置 进入时间设置&#xff0…...

Linux——进程间通信1

目录 进程间通信目的 进程间通信标准 管道 匿名管道 管道实现进程间通信 管道的特点 进程池 ProcessPool.cc Task.hpp 习题 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件…...

循环语句——“Python”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是Python中的循环语句呀&#xff0c;分为while循环和for循环&#xff0c;下面&#xff0c;让我们进入循环语句的世界吧 循环语句 while循环 for循环 continue和break 循环语句小结 人生重开模拟器 设置初始属性 设置性别…...

Python synonyms查找中文任意词汇的同义词近义词

Python synonyms查找中文任意词汇的同义词近义词 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 一、安装 对于非专业的开发人员来说可以简单的使用Python一行代码来找到同义词。这…...

三分钟了解http和https

对应测试人员都会听过http请求和响应.在这里给大家介绍http相关的知识 一.http和https基本概念 HTTP&#xff1a;是互联网上应用最为广泛的一种网络协议&#xff0c;是一个客户端和服务器端请求和应答的标准&#xff08;TCP&#xff09;&#xff0c;用于从WWW服务器传输超文本…...

docker应用:搭建私有云盘

简介&#xff1a;NextCloud是一个开源的云存储解决方案&#xff0c;可以在自己的服务器上搭建个人云存储系统。它提供了与市面上主流云存储服务&#xff08;如Dropbox、Google Drive&#xff09;相似的功能&#xff0c;包括文件存储、共享、同步、协作等。NextCloud的主要优势在…...

【C++进阶】面向对象

程序 编写程序是为了让计算机解决现实生活中的实际问题。pascal之父、结构化程序设计先驱Niklaus Wirth提出程序 算法 数据结构。程序是完成一定功能的一些列有序指令的集合。指令 操作码 指令。将指令按一定的顺序进行整合&#xff0c;就形成了程序。 机器语言与汇编语言…...

从ChatGPT与New Bing看程序员为什么要学习算法?

文章目录为什么要学习数据结构和算法&#xff1f;ChatGPT与NEW Bing 的回答想要通关大厂面试&#xff0c;就不能让数据结构和算法拖了后腿业务开发工程师&#xff0c;你真的愿意做一辈子CRUD boy吗&#xff1f;对编程还有追求&#xff1f;不想被行业淘汰&#xff1f;那就不要只…...

SpringBoot-实用开发篇

SpringBoot开发实用篇开发实用篇中因为牵扯到SpringBoot整合各种各样的技术&#xff0c;所以在整合每一个技术之前&#xff0c;都会做一个快速的普及&#xff0c;这样的话内容整个开发实用篇所包含的内容就会比较多。在学习的时候&#xff0c;如果对某一个技术不是很清楚&#…...

Python进阶-----高阶函数->filter() 函数

目录 前言&#xff1a; filter() 函数介绍 filter() 函数使用示例 1.与循环对比 2.与lambda函数综合使用 3.使用None过滤False 4.过滤字典相关数据 前言&#xff1a; 家人们&#xff0c;当你们获取了一个序列的时候&#xff0c;想要把一些内容去掉&#xff0c;保留一部分…...

C/C++面试可能会问三:指针和数组一样吗?

答案&#xff1a;不一样。 哪里不同&#xff1f; 数组名&#xff1a;数组名的值是一个指针常量&#xff0c;也就是数组第一个元素的地址。 它的类型取决于数组元素的类型&#xff1a;如果他们是int类型&#xff0c;那么数组名的类型就是“指向int的常量指针”&#xff1b;如果…...

数字经济新生态,中小企业如何发展营销数字化

五年弹指一挥间&#xff0c;中国数字经济正从尝试探索迈向快速发展&#xff0c;这一趋势&#xff0c;从今年两会的国务院机构改革、总理政府工作报告、部长通道答疑解惑、科技领域大佬提案中都能看出来。 在政府工作报告中&#xff0c;我们可以看到数字经济在不断壮大&#xff…...

【网络】https协议

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【网络】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文章…...

【11】SCI易中期刊推荐——计算机方向(中科院4区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…...

STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式2)

STM32 OTA应用开发——通过串口/RS485实现OTA升级&#xff08;方式2&#xff09; 目录STM32 OTA应用开发——通过串口/RS485实现OTA升级&#xff08;方式2&#xff09;前言1 环境搭建2 功能描述3 程序编写3.1 BootLoader部分3.2 APP的制作4 修改工程中的内存配置4.1 Bootloader…...

【Spring6】| Bean的生命周期(重要)

目录 一&#xff1a;Bean的生命周期 1. 什么是Bean的生命周期 2. Bean的生命周期之5步 3. Bean生命周期之7步 4. Bean生命周期之10步 5. Bean的scop&#xff08;作用域&#xff09;不同&#xff0c;管理方式不同 6. 自己new的对象如何让Spring管理 一&#xff1a;Bean的…...

做网站私活多少钱/可以发广告的100个网站

ArangoDB GmbH 是一家开发 NoSQL 数据库的德国初创公司&#xff0c;总部位于北莱茵-威斯特法伦州科隆市。近日&#xff0c;该公司宣布获得了一笔 220 万欧元的种子轮融资&#xff0c;领投方是慕尼黑知名风投公司 Target Partners。 该公司开发的开源 NoSQL 数据库 ArangoDB 是目…...

做公司网站的费用/广州发布紧急通知

我正在为网站进行数据导入功能 . 我在宅基地上使用Laravel 5.1&#xff0c;并给了机器4GB的RAM和两个虚拟的cpu . 为了导入数据&#xff0c;我使用了Laravel Excel软件包&#xff0c;其chuncking机制基本上打破了块中的数据集&#xff0c;并将处理添加到队列中 . 其工作流程如下…...

广东如何做企业网站设计/市场调研报告范文3000字

&#x1f352; 作者简介&#xff1a;大学机械本科&#xff0c;野生程序猿&#xff0c;学过C语言&#xff0c;玩过前端&#xff0c;还鼓捣过嵌入式&#xff0c;设计也会一点点&#xff0c;不过如今痴迷于网络爬虫&#xff0c;因此现深耕Python、数据库、seienium、JS逆向、安卓逆…...

现在可以做网站么/seo搜索是什么意思

题目&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1051 经典的贪心题&#xff0c;按照l,w排好序后进行扫描标记&#xff0c;注意逻辑即可。 #include <iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespac…...

网站建设有哪些常用行为/网页制作培训教程

问题出现原因 出现install-snap change in progress问题是因为snap在上一次安装软件的时候没有安装完 问题解决办法 打开终端 Ctrl Alt t 输入命令 snap changes 获取到当前snap记录&#xff0c;我们会发现在ID为25的是之前安装没有完成的接下来输入命令&#xff0c;然后…...

免费建设网站有哪些/网站优化+山东

Flutter学习侧边栏(抽屉)DrawerHeaderUserAccountsDrawerHeader侧边栏路由跳转侧边栏(抽屉) 侧边栏可以分为左侧边栏和右侧边栏&#xff0c;是放在Scaffold中使用的 return Scaffold(appBar: AppBar(title: const Text(Flutter Demo),),drawer: Drawer(child: Text("左侧…...