一、OS模块
- os模块:可以处理文件和目录,是Python系统和操作系统进行交互的一个接口。
- 写自动化脚本还是做测试os模块都是一个重量级的模块。
二、常用
os.mkdir() # 新建目录
os.path.join() # 连接多级目录
os.getcwd() # 获取当前文件所在的绝对路径
os.path.dirname(os.getcwd()) # 功能:去掉文件名,返回目录
print(__file__) # __file__表示了当前文件的path
os.path.dirname((__file__) # 就是得到当前文件的绝对路径
os.listdir() 列出指定目录下所有文件
os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
os.path.abspath(name) # 获得绝对路径
python中/所代表的是正斜杠,而\代表的是反斜杠。\ --转义字符
转义字符 | 描述 |
---|---|
\(处于行尾位置) | 续行符 |
\\ | 反斜杠 可代表路径 |
\" | 双引号 |
\t | 横向制表符 |
\r | 回车 等等 |
三、补充
os.remove() 删除文件
os.unlink() 删除文件
os.rename() 重命名文件
os.chdir() 改变当前工作目录
os.getcwd() 获取当前文件路径
os.mkdir() 新建目录
os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree())
os.makedirs() 创建多级目录
os.removedirs() 删除多级目录
os.stat(file) 获取文件属性
os.chmod(file) 修改文件权限
os.utime(file) 修改文件时间戳
os.name(file) 获取操作系统标识
os.system() 执行操作系统命令
os.execvp() 启动一个新进程
os.fork() 获取父进程ID,在子进程返回中返回0
os.execvp() 执行外部程序脚本(Uinx)
os.spawn() 执行外部程序脚本(Windows)
os.access(path, mode) 判断文件权限(详细参考cnblogs)
os.wait() 暂时未知
os.path模块:
os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组
os.path.dirname(filename) 返回文件路径的目录部分
os.path.basename(filename) 返回文件路径的文件名部分
os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径
os.path.abspath(name) 获得绝对路径
os.path.splitunc(path) 把路径分割为挂载点和文件名
os.path.normpath(path) 规范path字符串形式
os.path.exists() 判断文件或目录是否存在
os.path.isabs() 如果path是绝对路径,返回True
os.path.realpath(path) #返回path的真实路径
os.path.relpath(path[, start]) #从start开始计算相对路径
os.path.normcase(path) #转换path的大小写和斜杠
os.path.isdir() 判断name是不是一个目录,name不是目录就返回false
os.path.isfile() 判断name是不是一个文件,不存在返回false
os.path.islink() 判断文件是否连接文件,返回boolean
os.path.ismount() 指定路径是否存在且为一个挂载点,返回boolean
os.path.samefile() 是否相同路径的文件,返回boolean
os.path.getatime() 返回最近访问时间 浮点型
os.path.getmtime() 返回上一次修改时间 浮点型
os.path.getctime() 返回文件创建时间 浮点型
os.path.getsize() 返回文件大小 字节单位
os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径
os.path.lexists #路径存在则返回True,路径损坏也返回True
os.path.expanduser(path) #把path中包含的”~”和”~user”转换成用户目录
os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}”
os.path.sameopenfile(fp1, fp2) #判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) #判断stat tuple stat1和stat2是否指向同一个文件
os.path.splitdrive(path) #一般用在windows下,返回驱动器名和路径组成的元组
os.path.walk(path, visit, arg) #遍历path,给每个path执行一个函数详细见手册
os.path.supports_unicode_filenames() 设置是否支持unicode路径名
import os #
f=os.listdir(r'E:') #获取路径下有那些文件
os.rename('aa.txt','a.txt') #重命名
os.getcwd() #获取当前所在位置
os.chdir('文件路径') #切换目录
os.popen('要执行的命令')
b=os.popen('nslookup www.baidu.com') #popn(要执行的命令)
print(b.read()) #read读取结果。
os.mkdir('aaa') #创建目录
os.makedirs('bbb\cc\d') #递归创建目录
os.removedirs(r'bbb\cc\d') #递归删除目录
os.remove('a.txt') #删除普通文件
os.rmdir('home') #删除空目录
a= os.popen('ping 8.8.8.8') #执行命令
print(a.read()) #read读取结果
# print( os.getcwd()) #获取当前所在的位置。
# os.chdir(r'C:\Users\Tangguo\PycharmProjects\untitled\venv') #切换目录
# print(os.getcwd())
# os.rmdir("ccc") #删除单级目录为空的文件夹。
# os.path.isfile(i) #判断是否为一个文件。
# os.path.isdir(i) #判断是否为一个目录。
#os.path.split把路径分为2部分 1个是目录路径 1个是文件名
#os.path.splitext把文件后缀与文件路径分开。
# eg:
a=(os.path.split(r"D:\pyproject\day21模块\gouguoqinew\test.py"))
b=(os.path.splitext(r"D:\pyproject\day21模块\gouguoqinew\test.py"))
print(a,b)
统计某个目录下有多少个.py文件
#统计E:\demo目录下有多少个.py文件
import os
q=os.listdir(r'E:\demo')
# print(q)
s=0
for i in q:
# a=os.path.split(r'E:\demo\a.txt') #将文件路径与文件分割开
b=os.path.splitext(i) #将后缀名与文件分隔开
# for y in b:
if b[1]=='.py':
s+=1
print(s)
#判断目录下的目录及文件个数。
import os
m,n = 0,0
for i in os.listdir():
if os.path.isdir(i):
m+=1
if os.path.isfile(i):
n+=1
print('目录',m,'个')
print('普通文件',n,'个')
#判断目录下的目录及文件个数。第二种方法。
import os
a=[n for n in os.listdir() if os.path.isdir(n)]
b=[m for m in os.listdir() if os.path.isfile(m)]
print('目录',len(a),'个')
print('普通文件',len(b),'个')
# 在指定路径下创建文件夹
import os
path = r"D:\Logcat"
os.mkdir(path+'./a.folder')
folder_name = ['./b.folder','./c.folder','./d.folder']
for name in folder_name:
os.mkdir(path+name)
a = os.path.join(path,"a.folder","folder_1","a.txt")
print(a)