python基础之模块之osos.path及os与shutil对比

hszstudypy hszstudypy     2022-12-11     474

关键词:

: 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模块详解(代码片段)

...互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。os.makedirs("dirname1/dirname2")#创建递归的目录os.remove("dirname3/dirname2/a_test")#remove删除文件os.removedir... 查看详情

python之初识模块二(代码片段)

os模块os模块是与系统交互的一个接口os.makedirs(‘dirname1/dirname2‘)可生成多层递归目录os.removedirs(‘dirname1‘)若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推os.mkdir(‘dirname‘)生成单级目录;相当于shel... 查看详情

python之os模块(代码片段)

OS模块基本操作提供对操作系统进行调用的接口importos#导入模块os.getcwd()#获取当前目录(pwd)os.chdir("/Users")#切换到某个指定的目录(cd/Users)os.curdir#返回当前目录(‘.‘、cd.)os.pardir#返回上级目录(‘..‘、cd..)os.makedirs(‘dirname1/dirname2‘... 查看详情

python之os模块(代码片段)

...用户,它是‘posix‘。os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。os.getenv()和os.putenv:分别用来读取和设置环境变量os.listdir():返回指定目录下的所有文件和目录 查看详情

py基础之模块与包

...个__init__.py文件以便区分包和普通目录‘‘‘#1.导入模块:python用import导入一个模块importloggingimportmath#还可以引入指定的函数,方法是frommathimport 查看详情

os模块之path

...路径的批量操作os.getcwd():函数得到当前工作目录,即当前Python脚本工作的目录路径(绝对路径)os.listdir():输出当前路径下的所有文件(以列表的形式)1>>>importos2>>>os.getcwd()3‘F:\Projects\Python‘4>>>os.listdir(os.getc... 查看详情

python常用模块之ossys(代码片段)

一、os模块说明:os模块是对操作系统进行调用的接口1.os.pardir#获取当前目录的父目录字符串名:(‘..‘)2.os.makedirs(‘dirname1/dirname2‘)#可生成多层递归目录3.os.removedirs(‘dirname1‘)#若目录为空,则删除,并递归到上一级目录,如... 查看详情

模块之os模块

  #通过以上’os.getcwd()‘可以查看当前python解释器所执行的环境的位置  #通过’os.listdir()‘可以查看当前目录下的所有文件名和目录名字 #’os.remove(‘文件或者文件夹名字‘)‘    可以删除文件... 查看详情

python常用模块之sys,os(代码片段)

....sys模块     1.作用:     sys模块是与python解释器交互的一个接口  2.具体使用    1.sys.argv获取当前正在执行的命令行列表,第一个为程序本身路径print(‘filename%s‘%sys.argv[0])#打印当前文件路径    根... 查看详情

python标准库——os模块(代码片段)

python标准库——os模块  hello!我是wakeyo_J,每天一个konwledgepoint,一起学python,让技术无限发散。os模块python标准库——os模块1.os库基本介绍2.os库之路径操作3.os库之进程管理4.os库之环境参数5.案例总结  目前&... 查看详情

python基础详解

python基础部分python基础一python基础二Python最详细,最深入的代码块小数据池剖析深浅copypython文件操作python函数部分python函数初识python函数进阶python装饰器python迭代器,生成器python内置函数,匿名函数python递归函数python二分查找算法... 查看详情

python基础系列讲解——时间模块详解大全之time模块

Python中提供处理时间日期相关的内置模块有time、datetime和calendar。time模块中大多数函数调用了所在平台Clibrary的同名函数,因此更依赖于操作系统层面,所以time模块的有些函数与平台相关,在不同的平台上可能会有不同的效果,... 查看详情

python之os模块详解(代码片段)

"""python必学之os模块OS模块是Python标准库中的一个用于访问操作系统功能的模块使用OS模块中提供的接口,可以实现跨平台访问通用操作:一.获取平台信息二.对目录的操作三.判断操作"""importos‘‘‘第一个:系统操作‘‘‘#一.os.sep... 查看详情

python之os模块详解(代码片段)

...用户,它是‘posix‘。os.getcwd:得到当前工作目录,即当前python脚本工作的目录路径。os.getenv()和os.putenv:分别用来读取和设置环境变量os.listdir():返回指定目录下的所有文件和目录名os.remove(file):删除一个文件os.stat(file):获得文件... 查看详情

并发编程之多进程

一multiprocessing模块介绍  python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。  multiprocessing模块用来开启子进程,... 查看详情

day5模块学习--os模块学习

python基础之模块之os模块os模块os模块的作用:   os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/删除某个文件/... 查看详情

并发编程之多进程

multiprocessing模块  python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程。Python提供了multiprocessing。  multiprocessing模块用来开启子进程,并... 查看详情

python基础之-----json模块使用

json就是字符串长得像字典!字典的key和value可以用单引号,也可以用双引号字典的定义:json串的定义:  注:1.json串没有“变量名= ” 2.json的校验网站:http://www.bejson.com/1.json串如何转换成字典?首先importjson模块... 查看详情