python的os模块详细解读(一):https://developer.aliyun.com/article/1495764
shutil模块 复制/移动
shutil 是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。
shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。
import shutil #copyfileobj(fsrc, fdst[, length=16*1024]) 复制文件 (length的单位是字符(表达一次读多少字符/字节)) """ fp_src = open("3.txt",mode="r",encoding="utf-8") fp_dst = open("4.txt",mode="w",encoding="utf-8") shutil.copyfileobj(fp_src,fp_dst) """ #copyfile(src,dst) #单纯的仅复制文件内容 , 底层调用了 copyfileobj # shutil.copyfile("4.txt","5.txt") #copymode(src,dst) #单纯的仅复制文件权限 , 不包括内容 (虚拟机共享目录都是默认777) """注意: 要先有两个文件才可以,不会默认创建""" shutil.copymode("4.txt","5.txt") #copystat(src,dst) #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容 shutil.copystat("4.txt","5.txt") #copy(src,dst) #复制文件权限和内容 shutil.copy("5.txt","6.py") #copy2(src,dst) #复制文件权限和内容,还包括权限,组,用户,时间等 shutil.copy2("5.txt","7.py") #copytree(src,dst) #拷贝文件夹里所有内容(递归拷贝)。 # shutil.copytree("lianxi","lianxi2") #rmtree(path) #删除当前文件夹及其中所有内容(递归删除) ,目录中有文件也能递归删除,不能删除文件否则报错 # shutil.rmtree("lianxi2")
#move(path1,paht2) #移动文件或者文件夹,权限也附带移动 # shutil.move("7.py","lianxi/888.php") shutil.move("7.py","/888.php")
os.path 路径模块
import os pathvar = "/home/wangwen/mywork/ceshi.py" pathvar = __file__ #basename() 返回文件名部分 res = os.path.basename(pathvar) print(res)
#dirname() 返回路径部分
res = os.path.dirname(pathvar) print(res)
basename和dirname在框架django和flask中使用比较多
#split() 将路径拆分成单独的路径部分和文件名部分 组合成一个元组 print(os.path.split(__file__))
#os.sep将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 linux / windows\ ***
path1 = "home" path2 = "wangwen" path3 = "mywork" pathvar = path1 + os.sep + path2 + os.sep + path3 print(pathvar)
#用join改造,路径分隔符会根据系统自动添加,不用自己手动加了
path_new = os.path.join(path1,path2,path3) print(path_new)
#splitext() 将路径分割为后缀和其他部分 (了解) 方便取文件后缀,以最后一个 . 后面为后缀 可以使用str的split方法根据 . 分隔取代
pathvar = "/home/wangwen/mywork/ceshi.py" print( os.path.splitext(pathvar) ) print( pathvar.split(".")[-1] )
os.path.realpath()
Python中的方法用于通过消除路径中遇到的任何符号链接来获取指定文件名的规范路径。
#getsize() 获取文件的大小 ***
#获取路径
#pathvar = os.path.dirname(__file__) # 方法一 pathvar = os.getcwd() # 方法二 path_new = os.path.join(pathvar,"2.py") print(path_new)
#计算文件大小,得到的是字节,int类型
res = os.path.getsize(path_new) print(pathvar) res = os.path.getsize("/mnt/hgfs/python32_gx/day14") print(res)
#isdir() 检测路径是否是一个文件夹 返回True或者False***
res = os.path.isdir("/mnt/hgfs/python32_gx/day14") print(res)
#isfile() 检测路径是否是一个文件 ***
res = os.path.isfile("/mnt/hgfs/python32_gx/day16/1.py") print(res)
#islink() 检测路径数否是一个链接
res = os.path.islink("/home/wangwen/mywork/1122.py") print(res)
#getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳)
import time res = os.path.getctime("/home/wangwen/mywork/4.txt")
#getmtime() 获取文件最后一次修改时间(返回时间戳)
res = os.path.getmtime("/home/wangwen/mywork/4.txt")
#getatime() 获取文件最后一次访问时间(返回时间戳)
res = os.path.getatime("/home/wangwen/mywork/4.txt") print(res) print(time.ctime(res))
#exists() 检测指定的路径是否存在 ,文件目录都可以检测***
res = os.path.exists("/home/wangwen/mywork/4.txt") #res = os.path.exists("4.txt") print(res,"<============>")
#isabs() 检测一个路径是否是绝对路径
res = os.path.isabs("2.py") print(res)
#abspath() 将相对路径转化为绝对路径,前提是该文件要在当前python的工作目录,或者切换目录后的目录。不然计算出的绝对路径是错误的
res = os.path.abspath("2.py") print(res)
pathvar = "2.py" if not os.path.isabs(pathvar): abs_path = os.path.abspath("2.py") print(abs_path)