目录
3.1.1 查看当前目录的绝对路径的函数是放在os.path模块中,操作如下
3.1.2 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来的函数是放在os.path模块中,然后创建一个目录的函数是放在os,操作如下
3.3 使用shutil.copyfile(A,B)复制文件
3.4 x for xos.listdir('.') if 列出当前目录下的所有目录
3.5 x for xos.listdir('.') if 列出所有.py文件
在python程序中执行这些目录和文件的操作,其实操作系统提供的dir、cp等命令只是简单地调用了操作系统提供的接口函数,python内置的os模块也可以直接调用操作系统提供的接口函数。
一、查看操作系统及详细的系统信息
1.1 查看操作系统
在Python交互式命令行下,输入如图所示
nt表示windows系统,posix表示Linux、Unix或Mac OS X系统
1.2查看详细的系统信息
报错,是因为windows系统不提供uname()函数,说明os某些模块与操作系统相关
二、查看环境变量、获得某个环境变量的值
2.1查看环境变量
输入显示如图
2.2获得某个环境变量的值
三、操作文件和目录
3.1 查看、创建、删除目录
3.1.1 查看当前目录的绝对路径的函数是放在os.path模块中,操作如下
3.1.2 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来的函数是放在os.path模块中,然后创建一个目录的函数是放在os,操作如下
发现创建testdir目录成功
3.1.3删除目录的函数是放在os模块中,操作如下
发现删除testdir目录成功
3.2 合成路径和拆分路径
3.2.1合成路径
3.2.2拆分路径
3.2.3直接获取文件名
这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
3.3 使用shutil.copyfile(A,B)复制文件
显示如图:
注意事项:
模板为shutil.copyfile('src','dst'),注意src与dst必须都路径+文件名.后缀,不能仅为目录、文件名等形式。否则会报错
下面列举一部分情况,具体可以看一个博主写,很详细。https://blog.csdn.net/sunjinjuan/article/details/79028828
copyfile(src, dst) #src, dst 都需是文件名, 如果dst 存在或无权限,会抛出异常
copy(src, dst) #dst 可以是目录名。
3.4 x for xos.listdir('.') if 列出当前目录下的所有目录
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
3.5 x for xos.listdir('.') if 列出所有.py文件
>>> [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
如果没有的话,显示如下
四、练习
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
思路,先遍历出当前目录,及所有子目录的文件名,再进行判断是否包含指定字符串,满足条件则打印相对路径
代码:
运行:
os.walk的用法 见http://www.runoob.com/python/os-walk.html
概述
os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。
os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
在Unix,Windows中有效。
语法
walk()方法语法格式如下:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
参数
-
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
-
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
-
onerror -- 可选, 需要一个 callable 对象,当 walk 需要异常时,会调用。
-
followlinks -- 可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。