Python学习-shutil模块和OS模块学习

shutil模块

针对文件的拷贝,删除,移动,压缩和解压操作

在这里插入图片描述

# 1.copyfileobj只能复制文件内容,无法复制权限#复制文件时,要选择自己有权限的目录执行操作,创建的文件会根据系统umask设定的参数来指定用户权限
```shell
[student@server1 tmp]$ ll /etc/passwd
-rw-r--r-- 1 root root 2.7K  715 09:02 /etc/passwd
#-----------------------------------------------------------
with open("/etc/passwd", mode="r") as fr:with open("/tmp/mypasswd",mode="w") as fw:shutil.copyfileobj(fr,fw)
#-----------------------------------------------------------
[student@server1 tmp]$ ll /tmp/mypasswd 
-rw-rw-r-- 1 student student 2.7K 116 10:53 /tmp/mypasswd
# 2.copyfile只能复制文件内容,无法复制权限
```shell
[student@server1 tmp]$ ll /tmp/myresolv.conf 
-rw-rw-r-- 1 student student 53 116 11:01 /tmp/myresolv.conf
#---------------------------------------------------------
shutil.copyfile("/etc/resolv.conf","/tmp/myresolv.conf")
#---------------------------------------------------------
[student@server1 tmp]$ ll /etc/resolv.conf 
-rw-r--r-- 1 root root 53 116 07:52 /etc/resolv.conf
# 3.copy将文件src复制到文件或目录dst,包含权限
[student@server1 tmp]$ ll /etc/hosts 
-rw-r--r-- 1 root root 674 1031 09:50 /etc/hosts
#---------------------------------------------------------
shutil.copy("/etc/hosts","/tmp/myhosts")
#---------------------------------------------------------
[student@server1 tmp]$ ll /tmp/myhosts 
-rw-r--r-- 1 student student 674 116 11:04 /tmp/myhosts
# 4.move递归将文件或目录移动到另一个位置,并返回目标
[student@server1 tmp]$ ll /tmp/myhosts 
-rw-r--r-- 1 student student 674 116 11:04 /tmp/myhosts
#---------------------------------------------------------
shutil.move("/tmp/myhosts","/home/student/hosts.move")
#---------------------------------------------------------
[student@server1 tmp]$ ll /tmp/myhosts
ls: 无法访问 '/tmp/myhosts': 没有那个文件或目录
[student@server1 tmp]$ ll /home/student/hosts.move 
-rw-r--r-- 1 student student 674 116 11:04 /home/student/hosts.move
# 5.copytree递归复制以src为根的整个目录树,返回目标目录,由dst命名的目标不能存在(存在会报错),复制时注意文件目录权限
shutil.copytree("/home/student","/tmp/security")
----------------------------------------------------------
# 6.rmtree删除整个目录树,路径必须指向目录,空目录或者非空目录都可使用
[student@server1 test]$ ll
总用量 8.0K
-rw-r--r-- 1 student student 674 116 11:28 hosts
-rw-r--r-- 1 student student  53 116 11:28 resolv.conf
# -----------------------------------------------------------
shutil.rmtree("/tmp/test")
# ------------------------------------------------------------
[student@server1 test]$ ll
总用量 0
# 7.copymode复制权限,将权限位从src复制到dst,文件内容,所有者和组不受影响
[student@server1 test]$ ll
总用量 4.0K
-rw-r--r-- 1 student student 674 116 11:35 hosts
[student@server1 test]$ ll /etc/shadow
---------- 1 root root 1.5K  812 06:52 /etc/shadow
#----------------------------------------------------
shutil.copymode("/etc/shadow","/tmp/test/hosts")
#----------------------------------------------------
[student@server1 test]$ ll
总用量 4.0K
---------- 1 student student 674 116 11:35 hosts
# 8.chown更改路径的所有者用户和组
[student@server1 test]$ ll
总用量 4.0K
-rwxrwxrwx 1 student root 674 116 11:35 hosts
# ---------------------------------------------------
shutil.chown("/tmp/test/hosts",user="student",group="student")
# ------------------------------------------------------------
[student@server1 test]$ ll
总用量 4.0K
-rwxrwxrwx 1 student student 674 116 11:35 hosts

os 模块

在这里插入图片描述

print("当前工作目录:%s"%os.getcwd())
print("进程ID:%d" %os.getpid())
print("父进程ID:%d" %os.getppid())
print("系统环境变量:%s"%os.environ)
print("获取uname信息:%s"%str(os.uname()))
print("CPU核数:%s"%os.cpu_count())
print("查看当前目录下的文件:%s"%os.listdir("."))
os.chdir('/tmp/')
os.makedirs("./first")
print("当前目录:%s"%os.getcwd())
# remove删除文件
[student@server1 first]$ pwd
/tmp/first
[student@server1 first]$ ll
总用量 0
-rw-rw-r-- 1 student student 0 116 14:48 a.txt
# ------------------------------------------------
os.remove("first/a.txt")
# ------------------------------------------------
[student@server1 first]$ ll
总用量 0
# rmdir只能删除空目录
os.rmdir("first")
print("获取路径中携带的文件名:%s"%os.path.basename('/tmp/test/abc'))
print("获取路径中携带的文件目录:%s"%os.path.dirname("/tmp/test/abc"))
#split(),路径切割,从最右边/开始
print(os.path.split("/tmp/test/abc"))
#join()路径拼接
print(os.path.join("/tmp/test",'abc'))
# 判断路径是否为绝对路径
print(os.path.isabs('/tmp/test/abc'))
# 判断路径是否为相对路径
print(os.path.isdir('tmp/test/abc'))
# 判断是否为文件
print(os.path.isfile('tmp/test/abc'))
# 判断是否为链接文件
print(os.path.islink('tmp/test/abc'))
# 判断文件是否存在
print(os.path.exists('tmp/test/abc'))

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

首发scitb包,一个为制作统计表格而生的R包

目前,本人写的第3个R包scitb包已经正式在R语言官方CRAN上线,scitb包是一个为生成专业化统计表格而生的R包。 可以使用以下代码安装 install.packages("scitb")scitb包对我而言是个很重要的R包,我的很多想法需要靠它做平台来实现&a…

项目实战:优化Servlet,把所有围绕Fruit操作的Servlet封装成一个Servlet

1、FruitServlet 这些Servlet都是围绕着Fruit进行的把所有对水果增删改查的Servlet放到一个Servlet里面,让tomcat实例化一个Servlet对象 package com.csdn.fruit.servlet; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import c…

多级缓存之JVM进程缓存

1.什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时&#xff0…

STM32笔记—DMA

目录 一、DMA简介 二、DMA主要特性 三、DMA框图 3.1 DMA处理 3.2 仲裁器 3.3 DMA通道 扩展: 断言: 枚举: 3.4 可编程的数据传输宽度、对齐方式和数据大小端 3.5 DMA请求映像 四、DMA基本结构 4.1 DMA_Init配置 4.2 实现DMAADC扫描模式 实现要求…

PMP考试都是什么题?

PMP考试都是选择题,180道选择题,单选170道,多选10道,告知答案选项数量。 这里分享一下PMP考试中的常见翻译问题,pmp干货可在文末获取。 1、题目中出现的“启动会议”或“启动大会”开工会议(kick-off mee…

康耐视深度学习ViDi-ViDi四大工具介绍与主要用途

Cognex ViDi 工具是一系列机器视觉工具,通过深度学习解决各种难以解决的挑战。虽然这些工具共享一个引擎,但它们在图像中寻找的内容不同。更具体地说,在分析单个点、单个区域或完整图像时,每个工具都有不同的侧重点。 Locate&…

极致性能优化:前端SSR渲染利器Qwik.js | 京东云技术团队

引言 前端性能已成为网站和应用成功的关键要素之一。用户期望快速加载的页面和流畅的交互,而前端框架的选择对于实现这些目标至关重要。然而,传统的前端框架在某些情况下可能面临性能挑战且存在技术壁垒。 在这个充满挑战的背景下,我们引入…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点: 1. 硬件设施:包括服务器、存储设备、网络设备等,这是整个系统运行的物理基础。 2. 软件设施:包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等,这些是…

Jmeter分布式压测 —— 易踩坑点

1、压测机 无论是从成本角度还是维护的难易方面,压测机的数量,适量就好。举个例子,8C16G的一台服务器,部署Jmeter后,根据我个人的测试比对数据,配置≤1500个线程数,最好。太多了性能损耗较大&a…

Cannot run program “D:\c\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe“

如果你的idea在打开后出现了这个故障 Cannot run program "D:\c\IntelliJ IDEA 2021.1.3\jbr\bin\java.exe" (in directory "D:\c\IntelliJ IDEA 2021.1.3\bin"): CreateProcess error2, 系统找不到指定的文件。 打开IDEA的设置 file --> settings --&…

机器人制作开源方案 | 管内检测维护机器人

一、作品简介 作者:李泽彬,李晋晟,杜张坤,禹馨雅 单位:运城学院 指导老师:薛晓峰 随着我国的社会主义市场经济的飞速发展和科学技术的革新,各行各业的发展越来越离不开信息化和网络化的…

【扩散模型】5、Diffusion models beat GAN | 使用类别引导图像生成

论文:Diffusion models beat GAN on image Synthesis 代码:https://github.com/openai/guided-diffusion 出处:OPENAI | NIPS2021 时间:2021 贡献: 在本文章之前,扩散模型生成的图片已经非常逼真了&am…

ubuntu20.04配置解压版mysql5.7

目录 1.创建mysql 用户组和用户2.下载 MySQL 5.7 解压版3.解压 MySQL 文件4.将 MySQL 移动到适当的目录5.更改mysql目录所属的用户组和用户,以及权限6.进入mysql/bin/目录,安装初始化7.编辑/etc/mysql/my.cnf配置文件8.启动 MySQL 服务:9.建立…

linux之信号

Linux之信号 什么是信号信号的产生方式signalsignactionkill信号集信号屏蔽 什么是信号 信号机制是一种使用信号来进行进程之间传递消息的方法,信号的全称为软中断信号,简称软中断。 信号的本质是软件层次上对中断的一种模拟(软中断&#xff…

第26期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

Digicert证书是什么?

DigiCert是全球领先的数字信任提供商,使个人和企业能够自信地在线参与,相信他们在数字世界中的足迹是安全的。DigiCert通过塑造全球行业标准、提供卓越的全球合规性和运营、为公共和私人信任提供证书生命周期管理以及将信任扩展到供应链和互联生态系统&a…

QT实现的一个MVP设计模式demo

最近做qt 项目,发现网上基于MVP设计模式的QT例程很少,这里写一个demo示例可作为参考: 一、简要概述 MVP是由MVC发展而来,总体目的与作用相同。都是为了软件构架有层次之分,使得核心逻辑、界面控制、数据这三者分层清晰明了。减少…

Linux实现进度条小程序(包含基础版本和模拟下载过程版本)

Linux实现进度条小程序[包含基础版本和模拟下载过程版本] Linux实现进度条小程序1.预备的两个小知识1.缓冲区1.缓冲区概念的引出2.缓冲区的概念 2.回车与换行1.小例子2.倒计时小程序 2.基础版进度条1.的回车方式的打印2.百分比的打印3.状态提示符的打印 3.升级版进度条1.设计:进…

虚拟机Linux-Centos系统网络配置常用命令+Docker 的常用命令

目录 1、虚拟机Linux-Centos系统网络配置常用命令2、Docker 的常用命令2.1 安装docker步骤命令2.2 在docker容器中安装和运行mysql 2、dockerfile关键字区别(ADD/COPY,CMD/ENTRYPOINT) 1、虚拟机Linux-Centos系统网络配置常用命令 进入网络配置文件目录 cd /etc/sysconfig/ne…

【深度学习】Yolov8 区域计数

git:https://github.com/ultralytics/ultralytics/blob/main/examples/YOLOv8-Region-Counter/readme.md 很长时间没有做yolov的项目了,最近一看yolov8有一个区域计数的功能,不得不说很实用啊。 b站:https://www.bilibili.com/vid…