环境变量
在操作系统中定义的环境变量,全部保存在os.environ这个变量中,可以直接查看:
import os
print(os.environ)
操作文件和目录
操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中,这一点要注意一下。查看、创建和删除目录可以这么调用:
print(os.path.abspath('.'))#查看当前目录的绝对路径
os.path.join('D:/lesson','testdir')#在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:
os.mkdir('D:/lesson/testdir')#创建一个目录
os.rmdir('D:/lesson/testdir')#删除一个目录
想要把两个路径合成一个时,不要使用字符串拼接,而是通过os.path.join()函数,这样可以正确处理不同操作系统的路径分隔符
同样的道理,拆分路径也不要去拆字符串,而是通过os.path.split()函数,这样可以把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
print(os.path.split('D:/lesson/testdir/test.txt'))
print(os.path.splitext('path/to/file.text'))#获取文件拓展名
合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
文件操作
os.rename('D:/lesson/test.txt','D:/lesson/text.py')#对文件重命名
os.remove('D:/lesson/text.py')#删除文件
复制文件可以从shutil模块的copyfile()函数,os模块没有提供
理论上复制可以通过读写来文成,只不过要写很多代码
利用Python特性来过滤文件
比如我们要列出当前目录下的所有目录,只需要一行代码:
print([x for x in os.listdir('.') if os.path.isdir(x)])
要列出所有的.py文件,也只需一行代码:
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'])
listdir()返回指定路径下的文件和文件夹列表
print(os.listdir('D:/'))
判断某个路径是否为目录
print(os.path.isdir('D:/lesson'))
判断某个路径是否为文件
print(os.path.isfile('D:/lesson'))
练习
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
使用os.walk():遍历当前路径下目录,子目录及文件,通过root路径-dirs目录-files文件这样的形式返回
def detect_walk(path,failename):
for root ,dirs,files in os.walk(path):
for a in files:
if failename in a :
print(root,a)
detect_walk('D:/','test' )
使用递归函数
def fand_file(path,failname):
for x in os.listdir(path):
a = os.path.join(path,x)
if os.path.isfile(a) and failname in x:
print(a)
if os.path.isdir(a):
fand_file(a,failname)
fand_file('D:/安装程序','test')