Python 基础之模块之os os.path 及os与shutil对比
一: os 对系统进行操作
#注:以下操作都在linux环境下操作,且很多运行之前需要做好相关条件
import os
#(1)system() 在python总执行系统命令
#os.system("touch ceshi.txt") #linux
#os.system("ifconfig")
# os.system("mspaint") #windows
# os.system("ipconfig") #乱码
#(2)popen() 执行系统命令返回对象,通过read方法读出字符串
#使用popen 来解决windows乱码的bug
obj = os.popen("ipconfig")
print(obj)
res = obj.read()
print(res)
#(3)listdir() 获取指定文件夹中所有内容的名称列表
#相对路径
res = os.listdir(".")
print(res)
res = os.listdir("./ceshi100")
print(res)
#['01_math.py', '02_random.py', '03_time.py', '04_os.py']
#绝对路径(以 / 开头)
#res = os.listdir("/mnt/hgfs/pylinux/1.txt")
#print(res)
#(4)getcwd() 获取当前文件所在的默认路径
res = os.getcwd()
print(res)
#__file__ 魔术属性: 获取当前文件的完整路径
print(__file__)
#(5)chdir() 修改当前文件工作的默认路径
os.chdir("/home/hsz/ceshi111")
# os.system("rm -rf 1.txt")
# os.system("mkdir ceshi222")
#(6)environ 获取或修改环境变量
#返回的是一个系统的字典[是所有环境变量的字典] ,其中PATH 这个文件所对应的值,是系统命令路径
#如果想要系统执行你的命令,需要先从PATH环境变量当中进行查找
#如果知道了直接执行,找不到not found
#步骤分析:
(1)创建一个文件夹 在家目录里,比如mywork
(2)创建一个文件,叫zero,里面编辑写 ifconfig
(3)修好zero文件权限 chmod 777 zero
(4)sudo ./zero 执行当前脚本
(5)pycharm => os.system("zero") => 报错 找不到,因为系统环境 PATH当中,没有该路径
(6)利用os.environ 拼接一个新的路径到PATH 环境变量当中,让系统帮助我们找到对应的路径,从而执行该命令
(7)os.environ['PATH'] += ":/home/hsz/mywork" 把路径用拼接的形式加到环境变量里
(8)os.system("zero") =>成功
#例:
res = os.environ
print(res)
# 获取PATH 这个环境变量所有的路径
os.environ['PATH'] += ":/home/hsz/mywork"
os.system("zero")
"""
environ中有了:
:/home/hsz/bin:/home/hsz/.local/bin:/usr/local/sbin
相当于加好了环境变量
"""
#2.--os模块属性
#(1)name 获取系统标识linux ,mac(UNIX) ->posix windows ->nt
res = os.name
print(res)
#(2)sep 获取路径分隔符号 linux,mac -> / window -> \
#如果不确定系统是什么,用os.sep来拼接路径
res = os.sep
print(res) #/home/hsz/... windows C:Dirvers
#(3)linsep 获取系统的换行符号 linux,mac -> \n window -> \r\n 或 \n
res = os.linesep
print(repr(res))
"""
#linux打印:
posix
/
'\n'
window打印:
nt
\
'\r\n'
"""
二:os.path
import os
#(1)abspath() 将相对路径转化为绝对路径
res = os.path.abspath(".")
print(res)
#/mnt/hgfs/pylinux
#(2)basename() 返回文件名部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.basename(parhvar)
print(res)
#(3)dirname() 返回路径部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.dirname(parhvar)
print(res)
#(4)split() 将路径拆分成单独的文件部分和路径部分 组合成一个元组
res = os.path.split(parhvar)
print(res)
#(5)join() 将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 linux / windows \
path1 = "home"
path2 = "hsz"
path3 = "mywork"
res = os.path.join(path1,path2,path3)
print(res)
#(6)slitext() 将路径分割为后缀和其他部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.splitext(parhvar)
print(res)
#(7)getsize() 获取文件大小
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.getsize(parhvar)
print(res)
#(8)isfile() 检测路径是否是一个文件
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.isfile(parhvar)
print(res)
#(9)getctime() [windows] 文件的创建时间,[linux] 权限的改动时间(返回时间戳)
'''
验证linux没有创建时间 只有权限改动时间 linux查看文件的状态:命令是: stat 1.txt(文件名)
os.chdir("/home/hsz/mywork")
res = os.getcwd()
print(res)
'''
#例1:
pathvar = "/mnt/hgfs/pylinux/ceshi1.txt"
res = os.path.getctime(parhvar)
print(res)
#例2:
import time
res = time.ctime(res)
print(res)
#(10)getmtime() 获取文件最后一次修改时间(返回时间戳)
res = os.path.getatime(parhvar)
print(res)
res = time.ctime(res)
print(res)
#(11)getatime() 获取文件最后一次访问时间(时间戳)
res = os.path.getatime(parhvar)
print(res)
import time
res = time.ctime(res)
print(res)
#(12)exists() 检测指定的路径是否存在
parhvar = "/mnt/hgfs/pylinux/dqwdq"
res = os.path.exists(parhvar)
print(res)
#(13)isabs() 检测一个路径是否是绝对路径
parhvar = "."
res = os.path.isabs(parhvar)
print(res)
# 两题重要题目:
#遍历所有的文件和文件夹,计算文件的大小
size = 0
for i in lst:
print(i)
path_new = os.path.join(pathvar,i)
if os.path.isdir(path_new):
print(i,"是一个目录")
elif os.path.isfile(path_new):
size += os.path.getsize(path_new)
#使用递归来完成文件大小的计算
pathvar = "/mnt/hgfs/pylinux/ceshi100"
def getallsize(pathvar):
size = 0
lst = os.listdir(pathvar)
print(lst)
for i in lst:
print(i)
#拼接路径 + 文件名 => 新路径
path_new = os.path.join(pathvar,i)
if os.path.isdir(path_new):
size += getallsize(path_new)
'''
size1 = size + getallsize(path_new)
size2 = size1 + getallsize(path_new)
'''
elif os.path.isfile(path_new):
size += os.path.getsize(path_new)
return size
res = getallsize(pathvar)
print(res)
res2 = res / 1024
print(res2,"k")
三: os 和 shutil 模块
os => 新建和删除
shutil => 复制和剪切
1.os
import os
#(1)os.chdir默认更改工作路径
os.chdir("/home/hsz/mywork")
#(2)os.mknod 创建文件
#os.mknod("ceshi1101.txt")
#(3)os.remove 删除文件
#os.remove("ceshi1002.txt")
#(4)os.mkdir 创建目录(文件夹)
os.mkdir("ceshi002",mode=0o764)
#os.mkdir("ceshi003",mode=0o754)
#(5)os.rmdir 删除目录(文件夹)
#os.rmdir("ceshi002")
#(6)os.rename 对文件,目录重命名
#os.rename("ceshi003","ceshi007")
#(7)os.makedirs 递归创建文件夹
#os.makedirs("a/b/c/d")
#(8)os.removedirs 递归删除文件夹(空文件夹)
#os.removedirs("./a/b/c/d")
#如果是空文件夹全部删除,如果不是空文件夹,删到不是空文件夹那一层
2.shutil 模块 复制/移动
#(1) 仅仅复制文件内容
#copyfileobj(fsrc,fdst[,length=16*1024]) 复制文件(length 的单位是字符(表达一次读多少字符))
import shutil
fp1 = open("./3.txt","r",encoding="utf-8")
fp2 = open("./13.txt","w",encoding="utf-8")
shutil.copyfileobj(fp1,fp2)
#copyfile(src,dst) #单纯的仅复制文件内容,底层调用了 copyfileobj
#shutil.copyfile("3.txt","14.txt") #copyfile 如果没有这个文件,自动创建
#(2) 仅仅复制权限的
#copymode(src,dst) #单纯的仅复制文件权限,不包括内容(虚拟机共享目录都是默认777)
os.system("chmod 777 3.txt")
shutil.copymode("3.txt","6.txt")
#copy2(src,dst) #复制文件权限和内容,还包括权限,组,用户,时间等
shutil.copy2("3.txt","15.txt")
#(4)递归拷贝或删除
#copytree(src,dst) #拷贝文件夹里所有内容(递归拷贝)
shutil.copytree("/home/hsz/mywork3/ceshi004","/home/hsz/mywork3/ceshi005")
#rmtree(path) #删除当前文件夹及所有内容(递归删除)
shutil.rmtree("/home/hsz/mywork3/ceshi005")
#move(path1,path2) #移动文件或者文件夹
shutil.move("./ceshi004","../ceshi10005")
Python 基础之模块之os os.path 及os与shutil对比的更多相关文章
- python基础之模块(一)
概述 模块,用一砣代码实现了某个功能的代码集合.一个功能可能由 N 个函数来组成,这些函数写到一个py文件中,那么这个Py文件就是传说中的模块. 模块可将代码归类,让你的代码看着条理清晰,当然还需要你 ...
- python基础之模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合. 而对于一个复杂的功能来,可能需要多个函数 ...
- python基础--自定义模块、import、from......import......
自定义模块.import.from......import...... 1)模块的定义和分类 1.模块是什么? 我们知道一个函数封装了一个功能,软件可能是有多个函数组成的.我们说一个函数就是一个功能, ...
- python基础——第三方模块
python基础——第三方模块 在Python中,安装第三方模块,是通过包管理工具pip完成的. 如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了. 如果你正在使用Window ...
- python 基础之 模块
Python 基础之模块 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 就是一个python文件中定义好了类和方法,实现了一些功能,可以被别的python文 ...
- python基础——使用模块
python基础——使用模块 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用. 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
- python基础-7模块,第三方模块安装方法,使用方法。sys.path os sys time datetime hashlib pickle json requests xml
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- python基础之模块之os模块
os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小…… 另 ...
随机推荐
- StatelessWidget 无状态组件 StatefulWidget 有状态组件 页面上绑定数据、改变页面数据
一.Flutter 中自定义有状态组件 在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget. StatelessWidget ...
- 【Python 多进程】
" 一.模块介绍 multiprocess模快 仔细说来,multiprocess不是一个模块,而是python中的一个操作.管理进程的包,之所以叫multi是取自multiple的多功能的 ...
- DAG 计数
以下方法都是按照这个套路: 考虑一个不一定连通的 DAG ,你枚举一些零度点(拓扑序第一层)集合 \(S\),这些点之间不能连边,这些点跟剩下点(点集为 \(T\),\(|S| \cup |T| = ...
- 06-Docker-Image管理操作
目录 06-Docker-Image管理操作 参考 镜像命名规范 镜像管理命令 1. 拉取推送 2. 查看操作 3. 本地删除 4. 创建标签 5. 导出导入 06-Docker-Image管理操作 ...
- 00-Docker基本安装
目录 00-Docker基本安装 参考 安装与配置 启动与测试 00-Docker基本安装 Docker Version: 19.03.5
- 《JavaScript高级程序设计》读书笔记(三)基本概念第三小节 String、Object类型
内容---语法 上一小节---数据类型 本小节 String类型---流程控制语句---理解函数 String类型--零个或者多个16位Unicode字符组成字符序列,即字符串--可以由双引号&quo ...
- Dapr Pub/Sub 集成 RabbitMQ 、Golang、Java、DotNet Core
前置条件: <Dapr运用> <Dapr 运用之 Java gRPC 调用篇> <Dapr 运用之集成 Asp.Net Core Grpc 调用篇> 搭建 Rabb ...
- Linux 的三种软件安装包介绍
通过RPM软件包来安装 说起RPM(RedHat Package Management)标准的软件包,大家可能都会想起大名鼎鼎的REDHAT公司,正是RPM软件包发行方式的出现,使Linux中的应用软 ...
- sqlmap注入随笔记录
web7: 首先看见这道题,猜测flag在某页id上面,或者id是可以注入的. 先就是id爆破,用burpsuite抓了包,做了个0~9999的字典爆破id,发现自己猜测错了 那么就还是sql注入题了 ...
- 防止重复发送Ajax请求问题
在工作中有很多场景需要通过Ajax请求发送数据,像是注册.登录.提交用户反馈等.用户在点击了“确认”按钮之后有可能一段时间内没有收到反馈页面无任何反应,然后就接着连续多次点击“确认”按钮导致发送n个重 ...