day18.os模块 对系统进行操作
一、os操作
1、system()在python中执行系统命令
# os.system("ifconfig")
# os.system("touch 1.txt")
# os.system("rm -rf 1.txt")



2、popen() 执行系统命令返回对象,通过read方法读出字符串
防止字符串乱码,使用popen进行操作
obj = os.popen("ifconfig") # 显示的时候,按照utf-8进行转换,默认windows是gbk的编码集
res = obj.read()
print(res)

3、listdir() 获取指定文件夹中所有内容的名称列表
lst = os.listdir(".") # . 当前目录
lst = os.listdir("..") # .. 上一级目录
lst = os.listdir("/home/wangwen/")
print(lst)

4、getcwd() 获取当前文件所在的默认路径 (单纯的路径)
res = os.getcwd()
print(res)

5、路径 + 文件
print(__file__)

# python 终端执行报错: 因为__file __显示文件路劲,没有在文件里面执行,直接终端执行肯定报错.

6、chdir() 修改当前文件工作的默认路径
os.chdir("/home/kxq/kxq/temp")
# os.system("mkdir ceshi1")
os.system("rm -rf ceshi1")


7、environ 获取或修改环境变量
print(os.environ)
二、os和shutil
1、os
# os只能对文件进行新建/删除 创建目录 删除目录,不能对文件进行复制/移动操作,故引出shutil
import os
os.chdir("/home/kxq/kxq/temp") # os -> 新建/删除
#os.mknod 创建文件
# os.mknod("1.txt")
#os.remove 删除文件
# os.remove("1.txt") #os.mkdir 创建目录(文件夹)
# os.mkdir("ceshi100") #os.rmdir 删除目录(文件夹)
# os.rmdir("ceshi100") #os.rename 对文件,目录重命名
# os.rename("111.txt","123.py") #os.makedirs 递归创建文件夹
# os.makedirs("a/b/c/d/e") #os.removedirs 递归删除文件夹(空文件夹)
# os.removedirs("a/b/c/d/e")
2、shutil -> 复制/移动
1、copyfileobj(fsrc, fdst[, length=16*1024])
# 复制文件 (length的单位是字符(表达一次读多少字符))
# 单纯复制文件的内容
fp1 = open("123.py",mode="r",encoding="utf-8")
fp2 = open("lianxi1.php",mode="w",encoding="utf-8")
shutil.copyfileobj(fp1,fp2)
2、copyfile(src,dst)
#单纯的仅复制文件内容 , 底层调用了 copyfileobj ***
shutil.copyfile("lianxi1.php","lianxi2.py")
3、copymode(src,dst)
#单纯的仅复制文件权限 , 不包括内容 (虚拟机共享目录都是默认777)
shutil.copymode("123.py","456.py")
copystat(src,dst) #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容 ***
shutil.copystat("123.py","lianxi2.py")
4、copy(src,dst)
#复制文件权限和内容 ***
shutil.copy("456.py","lianxi3.html")
5、copy2(src,dst)
#复制文件权限和内容,还包括权限,组,用户,时间等 ***
shutil.copy2("456.py","lianxi4.css")
7、删除/移动(文件和文件夹) ***
7.1、copytree(src,dst)
#拷贝文件夹里所有内容(递归拷贝)
shutil.copytree("lianxi100","lianxi101")
7.2、rmtree(path)
#删除当前文件夹及其中所有内容(递归删除)
shutil.rmtree("lianxi101")
7.3、move(path1,paht2)
#移动文件或者文件夹
shutil.move("lianxi1.php","..") # 移动文件
shutil.move("lianxi100","../lianxi1000") # 移动并改名;
三、os path路径模块
import os
1、basename() 返回文件名部分 *
strvar = "/home/kxq/kxq/temp/20200801/1.py"
res = os.path.basename(strvar)
print(res) # 1.py
2、dirname() 返回路径部分 *
res = os.path.dirname(strvar)
print(res) # /home/kxq/kxq/temp/20200801
3、split() 将路径拆分成单独的文件部分和路径部分 组合成一个元组
tup = os.path.split(strvar)
print(tup)
4、join() 将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠
path1 = "ceshi1"
path2 = "kxq"
path3 = "lianxi1.py"
pathvar = path1 + os.sep + path2 + os.sep + path3
# pathvar = path1 + "/" + path2 + "/" + path3
pathvar = os.path.join(path1,path2,path3)
print(pathvar)
5、splitext() 将路径分割为后缀和其他部分 (了解)
strvar = "/home/wangwen/mywork/ceshi110.html"
res = os.path.splitext(strvar)
print(res) # ('/home/wangwen/mywork/ceshi110', '.html')
可以使用split切割出后缀
lst = strvar.split(".")
print(lst[-1])
6、getsize() 获取文件的大小 ***
res = os.path.getsize("1.py")
# 文件夹不能计算.
res = os.path.getsize("os")
print(res)
7、isdir() 检测路径是否是一个文件夹 *
strvar = "/home/kxq/kxq/temp/20200801/kxq"
res = os.path.isdir(strvar)
print(res)
8、isfile() 检测路径是否是一个文件 *
strvar = "/home/kxq/kxq/temp/20200801/kxq"
res = os.path.isfile(strvar)
print(res)
9、islink() 检测路径数否是一个链接 *
strvar = "/home/kxq/kxq/temp/20200801/kxq"
res = os.path.islink(strvar)
print(res)
10、stat 文件 查看当前文件的时间属性

11、getctime、getmtime、getatime
import time
#getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳) *
res = os.path.getctime("123.py")
#getmtime() 获取文件最后一次修改时间(返回时间戳) *
res = os.path.getmtime("123.py")
#getatime() 获取文件最后一次访问时间(返回时间戳) *
res = os.path.getatime("123.py") str_time = time.ctime(res)
print(str_time)
12、exists() 检测指定的路径是否存在 *
strvar = "/home/wangwen/mywork/wangwen11322132"
res = os.path.exists(strvar)
print(res)
13、isabs() 检测一个路径是否是绝对路径 *
pathvar = "."
res = os.path.isabs(pathvar)
print(res)
14、abspath() 将相对路径转化为绝对路径 *
pathnew = os.path.abspath(pathvar)
print(pathnew) if not os.path.isabs(pathvar):
pathnew = os.path.abspath(pathvar)
print(pathnew)
15、练习:计算文件夹的大小

import os pathvar = "/mnt/hgfs/python31_gx/day19/ceshi100" # 基本写法
lst = os.listdir(pathvar)
print(lst) # ['1.py', '2.py', '3.py', 'ceshi200'] size = 0
for i in lst:
# 拼接路径
pathnew = os.path.join(pathvar,i)
# 判断是否是文件
if os.path.isfile(pathnew):
print(i,"[文件]")
size += os.path.getsize(pathnew) # 判断是否是文件夹
elif os.path.isdir(pathnew):
print(i,"[文件夹]") print(size)
"""不确定有多少层级的情况下,使用递归""" # 递归计算文件夹的大小
def getallsize(pathvar):
size = 0
# 获取当前文件夹中所有内容
lst = os.listdir(pathvar)
# 循环列表
for i in lst:
# 拼接完整路径
pathnew = os.path.join(pathvar,i)
# 判断是否是文件或者文件夹
if os.path.isfile(pathnew):
size += os.path.getsize(pathnew)
elif os.path.isdir(pathnew):
# 如果是文件夹,继续调用函数.
size += getallsize(pathnew)
# 返回最后的结果
return size res = getallsize(pathvar)
print(res)
计算文件夹的大小

day18.os模块 对系统进行操作的更多相关文章
- Python::OS 模块 -- 文件和目录操作
os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...
- Python基础总结之第九天开始【python之OS模块对目录的操作、以及操作文件】(新手可相互督促)
年薪20万的梦想... python对文件.目录能做什么?或者说我们需要python替我们做什么?最经常的操作就是对文件的:打开.关闭.读取.写入.修改.保存等等对目录的操作,无非就是 ...
- Python:Day18 os模块、logging模块、正则表达式
迭代器 满足迭代器协议: 1.内部有next方法 2.内部有iter()方法 os模块 import os print(os.getcwd()) #C:\Users\Lowry\PycharmProj ...
- python 中文件输入输出及os模块对文件系统的操作
整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作. 文件输入输出 1.内建函数open(file_name,文件打开模式,通用换行符支持),打开文件返回文件对象. 2. ...
- os模块查看系统数据
>>> import os >>> os.name # 操作系统类型 'posix' 如果是posix,说明系统是Linux.Unix或Mac OS X,如果是nt ...
- 复习os模块常用的一些操作
import os # 1.切换路径============= d = os.getcwd() #获取当前的工作路径 os.chdir('D:\\')#目录的切换 print(os.getcwd()) ...
- 024.Python模块OS模块
一 OS模块 对系统进行操作 1.1 popen 可以把运行的结果,这个字符串转化成utf-8这样的编码格式在进行输出 import os res = os.popen("ifconfig& ...
- day19:os模块&shutil模块&tarfile模块
os模块:对系统进行操作(6+3) system popen listdir getcwd chdir environ / name sep linesep import os #### ...
- day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期
复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...
随机推荐
- C# 跨平台UI 技术
构建跨平台应用程序的的几种UI技术,以C# 或者其他基于.NET的 语言(诸如:Visual Basic[VB]).本文研究了三种跨平台技术,并讨论了在哪些情况下开发人员可以使用这些技术.本文使你对可 ...
- MyBatis-Plus 用起来真的很舒服
一.MyBatis-Plus 1.简介 MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在. 官网文档地址 ...
- postman做自动化测试1——collection runner
一.添加collection 打开postman,点击“collection”页签,点击collection下面的添加按钮. 弹出 新建面板,输入名称和描述,点击“creat”按钮,新建成功 3 点击 ...
- C语言中的内存对齐问题
问题 突然收到了一个问题: #include<stdio.h> #include <math.h> struct icd { int a; //4 char b; //1 do ...
- 数据可视化之powerBI技巧(二十二)利用这个方法,帮你搞定Power BI"增量刷新"
Power BI的增量刷新功能现在已经对Pro用户开通,但由于种种限制,很多人依然无法使用无这个功能,所以,每一次刷新,都要彻底更新数据集.这对于量级比较大的数据集来说,着实是一件耗费时间的事情. 拿 ...
- Android 性能优化 ---- 启动优化
Android 性能优化 ---- 启动优化 1.为什么要进行启动优化 一款应用的第一印象很重要,第一印象往往决定了用户的去留.打开一款应用,如果速度很快,很顺畅,那么很容易让人觉得这款应用背后的技术 ...
- Burp Suite Report - 报告功能
1. 通过点击Host选择不同的颜色,可以设置严重性: 2.生成网页版应用分析报告:选中所有条目->右击网址,保存所有选中项目,存储格式为html.
- 尝鲜刚发布的 SpringFox 3.0.0,以前造的轮子可以不用了...
最近 SpringFox 3.0.0 发布了,距离上一次大版本2.9.2足足有2年多时间了.可能看到这个名字,很多读者会有点陌生.但是,只要给大家看一下这两个依赖,你就知道了! <depende ...
- PHP中使用 TUS 协议来实现可恢复文件上传
曾经尝试过用PHP上传大文件吗?想知道您是否可以从上次中断的地方继续上传,而不会在遇到任何中断的情况下再次重新上传整个数据?如果您觉得这个场景很熟悉,请接着往下阅读. 文件上传是我们几乎所有现代Web ...
- 从零开始学Electron笔记(七)
在之前的文章我们介绍了一下Electron中的对话框 Dialog和消息通知 Notification,接下来我们继续说一下Electron中的系统快捷键及应用打包. 全局快捷键模块就是 global ...