os调用操作系统文件和命令
import os
os.system('notepad.exe')
os.system('ping www.baidu.com')
os.system('cmd')
os.startfile(r'C:\WeChat.exe')
文件和目录操作
os模块下常用操作文件方法
方法名 | 描述 |
---|---|
remove(path) | 删除指定的文件 |
rename(src,dest) | 重命名文件或目录 |
stat(path) | 返回文件的所有属性 |
listdir(path) | 返回path目录下的文件和目录列表 |
os模块下关于目录操作的方法
方法名 | 描述 |
---|---|
mkdir(path) | 创建目录 |
makedirs(path1/path2/path3/… | 创建多级目录 |
rmdir(path) | 删除目录 |
removedirs(path1/path2…) | 删除多级目录(文件夹为空)) |
getcwd() | 返回当前工作目录: current work dir |
chdir(path) | 把path设为当前工作目录 |
walk() | 遍历目录树 |
sep | 当前操作系统所使用的路径分隔符 |
#获取文件和文件夹相关信息
print(os.name) # windows -> nt linux -> posix
print(os.sep) # windows -> \ linux -> /
print(repr(os.linesep)) # windows -> \r\n linux -> \n\
print(os.stat('os.py'))
#关于工作目录的操作
print(os.getcwd())
os.chdir('d:')
os.mkdir('test1')
#创建目录,创建多级目录,删除
#os.mkdir('test2') #创建
#os.rmdir('test3') #删除
#os.makedirs('1/2/3') #创建多级目录
os.removedirs('1/2/3') #删除多级目录
#重命名
os.rename('test2','tet2')
#显示子目录及文件 (下一级子目录文件不会列出)
dirs = os.listdir('tet2')
print(dirs)
nt
\
'\r\n'
os.stat_result(st_mode=33206, st_ino=6473924464547444, st_dev=580033374, st_nlink=1, st_uid=0, st_gid=0, st_size=556, st_atime=1621172231, st_mtime=1621172231, st_ctime=1621170705)
C:\2021.5.16
['22.py', 'tets1']
os.path模块
提供了目录相关(路径判断,路径切分,路径链接,文件夹遍历)的操作
方法 | 描述 |
---|---|
isabs(path) | 判断path是否绝对路径 |
isdir(path) | 判断path是否为目录 |
isfile(path) | 判断path是否为文件 |
exists(path) | 判断指定路径的文件是否存在 |
getsize(filename) | 返回文件的大小 |
abspath(path) | 返回绝对路径 |
dirname§ | 返回目录的路径 |
getatime(filename) | 返回文件的最后访问时间 |
getmtime(filename) | 返回文件的最后修改时间 |
walk(top, func,arg) | 递归方式遍历目录 |
join(path, *paths) | 连接多个path |
split(path) | 对路径进行分割,以列表形式返回 |
splitext(path) | 从路径中分割文件的扩展名 |
import os.path
print(os.path.isabs('d:/a.txt')) #判断是否绝对路径
print(os.path.isdir('d:/a.txt')) #判断是否为目录
print(os.path.isfile('d:/a.txt')) #判断是否为文件
print(os.path.exists('d:/a.txt')) #判断文件是否存在
True
False
True
True
#获得文件基本信息
print(os.path.getsize('d:/a.txt')) #获取文件大小
print(os.path.abspath('d:/a.txt')) #获取文件绝对路径
print(os.path.dirname('d:/a.txt')) #获取目录的路径
print(os.path.getctime('d:/a.txt')) #获取文件最后改变时间
print(os.path.getatime('d:/a.txt')) #获取文件最后访问时间
print(os.path.getmtime('d:/a.txt')) #获取文件最后修改时间
#对路径的操作
path = os.path.abspath('d:/a.txt')
print(os.path.split(path)) #对路径进行分割,以列表形式返回
print(os.path.splitext(path)) #从路径中分割文件的扩展名
print(os.path.join('aa','bb','cc')) #连接多个path
32
d:\a.txt
d:/
1621084752.149624
1621134464.6233459
1621134459.6912696
('d:\\', 'a.txt')
('d:\\a', '.txt')
aa\bb\cc
列出目录下所有的.py文件 并输入文件名
#列出目录下所有的.py文件 并输入文件名
path = os.getcwd()
filelist = os.listdir(path) #列出子目录,子文件
for filename in filelist:
if filename.endswith('py'):
print(filename)
print('#################')
filelist2 = [filename for filename in os.listdir(path) if filename.endswith('py')]
for f in filelist2:
print(f, end='\t')
file.py
OS.py
#################
file.py OS.py
os.walk()
walk() 递归遍历所有文件和目录
方法:
返回一个3元素的元组(dirpath, dirnames, filenames)
- dirpath 列出指定目录的路径
- dirnames 目录下的所有文件夹
- filenames 目录下的所有文件
import os
all_files = []
path = os.getcwd()
list_files = os.walk(path)
for dirpath, dirnames, filenames in list_files:
for dir in dirnames:
all_files.append(os.path.join(dirpath, dir))
for file in filenames:
all_files.append(os.path.join(dirpath, file))
#打印所有子目录和子文件
for file in all_files:
print(file)