您的位置:首页 > 编程语言 > Python开发

python 3 中的 os 以及 os.path 模块的使用详解!阿波的博客

2017-12-09 17:14 901 查看

首先是os模块:

要先明确两个表示:‘.’表示的是当前目录,‘..’表示的是上一级目录(如果现在有点乱的话,下面会有具体的使用,请往下看。。)

getcwd():返回当前的工作目录:

import os
os.getcwd()
#输出'C:\\Python'

chdir(path):改变工作目录,参数:需要修改到的工作目录

os.chdir('E:\\python_py')
#当再次查询当前的工作目录的时候,就会返回新的目录
os.getcwd()
#输出'E:\\python_py'

listdir(path = '.'):列举指定目录中的所有文件的名字(在这里的path默认值就是'.',就是表示的当前的工作目录,返回值就是当前目录中的所有文件)返回类型是列表的形式

os.listdir()
#下面就是阿波得到的返回值了 ['Fiddler', 'format.py', 'input.txt', 'jieba-0.39', 'output.txt', 'pi.py', 'PyCharm 2017.2.4', '__pycache__']
#(因为上面把工作目录更改为'E:\\python_py'所以在这里'.'表示的就是这个目录喽)
#大家还可以传入path的值,来得到相应目录中的所有文件名了

mkdir(path):创建单层目录(在这里只能创建单层的目录,不可以递归创建目录!!),如果这个目录已经存在的话,就会抛出相应的异常

os.mkdir('test')
#这样我们就在'.'的目录中得到一个新的test文件夹

makedirs(path):这个就是递归创建新的目录咯

,如果存在的话,也会抛异常

os.makedirs('E:\\ONE\\TWO')
os.makedirs('E:\\ONE\\THREE')
#这样我们就可以在E盘中得到一个ONE目录,然后其中含有两个目录,TWO,THREE

remove(path):删除文件

#首先我们先从THREE文件夹中新建一个叫test的txt文件(非要用程序的话就是open()函数操作就好)
os.remove('E:\\ONE\\THREE\\test.txt')
#这样我们就删除了一个指定的文件

rmdir(path):删除单层目录,如果目录中不为空的话,抛出异常

os.rmdir('E:\\ONE\\THREE')
#贼样我们就删除了THREE正样得到一个目录

removedirs(path):递归删除目录,从子目录开始,依次往上删除,如果遇到一个目录不为空的话,就会抛出异常

os.removedirs('E:\\ONE\\TWO')
#我们就把我们刚开始新建的目录就删除了。。
#不得不感慨,自己作的还要自己解决啊,哈哈^_^

rename(old,new):表示将文件old重新命名为new
os.rename('test.txt','阿波.txt')
#我们只在当前工作目录下进行的操作,当然也可以选择绝对路径进行操作

system(command):表示运行系统的shell命令

os.system(cmd)
os.system('calc')
#分别表示打开cmd和calc(计算器)

walk(top):遍历这个路径下的所有子目录,返回值是由三个tuple类型元素组成的列表,[(当前目录列表),(子目录列表),(文件列表)],例子(important):

testwalk = os.walk('E:\\test_walk')
for dirname,subdir,file in testwalk:
print (dirname)
print (subdir)
print (file)
print ('___________________________________')
#输出结果
E:\test_walk
['test_a', 'test_b']
['test_c.txt']
___________________________________
E:\test_walk\test_a
[]
[]
___________________________________
E:\test_walk\test_b
[]
['a.txt', 'b.txt', 'c.txt', 'd.txt']
___________________________________

我们看到第一层输出的是当前目录(str类型),第二个是输出的是子目录的列表(list类型),第三个输出的是其中含有的文件列表(list类型

下面介绍一些可以跨平台的一些操作:

os.curdir:表示的是当前目录,和上面介绍的  '.'  表示同一个意思
os.pardir:表示上一级目录,和 ‘..’表示同一个意思
os.sep:表示当前系统下的路径分割符,在不同的操作平台上,他所代表的东西也不同,win表示  ‘\\’,Linux表示 '/'(小编阿波的电脑是Windows,所以上面一直在用'\\'

)
os.linesep:当前平台使用的行终止符(Win 中表示  ‘\r\n’,Linux中表示  ‘\n’)
os.name:代表自己当前使用的操作系统,(Win中会显示  ‘nt’,Linux中显示  'posix'等,小编想17年寒假换个Linux系统,吼吼)

好了,上面就差不多是os模块中经常用到的一些函数了!

现在我们介绍一下os.path模块:

basename(path):去掉目录路径,单独返回文件名

import os.path
os.path.basename('E:\\python_py\\input.txt')
#那么就会返回input.txt,这个在实际中应用会很多

dirname(path):去掉文件名,单独返回路径名

os.path.dirname('E:\\python_py\\input.txt')
#得到的值为'E:\\python_py'

join(path1[,path2[,...]]):表示将path1,path2各部分组成一个路径名

os.path.join('E:','python_py','input.txt')
#输出:'E:python_py\\input.txt'
#我们发现在E后面没有路径分割符,那么我们要注意了,这里我们应该自己添加上
os.path.join('E:\\','python_py','input.txt')
#输出:'E:\\python_py\\input.txt'

split(path):分割文件名与路径,返回元祖类型的参数
os.path.split('E:\\python_py\\input.txt')
#输出:('E:\\python_py', 'input.txt')

splitext(path):分离文件名与扩展名,返回类型也为元祖类型

os.path.splitext('E:\\python_py\\input.txt')
#输出:('E:\\python_py\\input', '.txt')

getsize(file):返回文件的尺寸,单位注意是字节

os.path.getsize('E:\\python_py\\input.txt')
#输出:172

这里我们一起一起说三个函数,因为这三个函数有些许的类似:
getatime(file),getctime(file),getmtime(file)
分别表示的是文件最近的访问时间,创建时间,最新的修改时间,返回类型是浮点型的秒数,(就是在讲解time模块中提到的时间戳,如果有点乱的可以在了解这个的时候先去了解一下time模块,有时间再去吧time模块做一下详细的解析吧,总体来说还是十分重要的.......^_^)ef
这里就先不写例子了........懒癌又犯了


下面我们说一些返回值是True和False的函数:

exists(path):判断文件或者目录是否存在......

os.path.exists('E:\\python_py\\阿波.avi')
#输出:False
#怪不好意思啊的,哈哈
os.path.exists('E:\\python_py\\input.txt')
#输出:True

isabs(path):判断路径书否为绝对路径
isdir(path):判断指定路径中是否存在这样的一个目录

os.path.isdir('E:\\python_py')
#输出:True(目录嘛)


isfile(path):判断指定路径中是否存在这样的一个文件

os.path.isfile('E:\\python_py\\input.txt')
#输出:True(文件嘛)


islink(path):判断指定路径中是否存在这样的一个符号链接
ismount(path):判断指定路径中是否存在这样的一个挂载点
samefile(path1,path2):判断path1和path2两个路径是否指向同一个文件

给大家一个实例吧,是在一本书上看到的,用python的zip方法将自己所选的文件压缩打包的指定的路径里面

import os
import time

source = ['"C:\\My Documents"',"C:\\Code"]#这里是需要转换的文件所在的的位置

target_dir = 'E:\\Backup'#转换完成之后放到的文件目录

if not os.path.exists(target_dir):#首先设置第一个文件夹
os.mkdir(target_dir)

today = target_dir + os.sep +\
time.strftime('%Y%m%d')

now = time.strftime('%H%M%S')

target = today + os.sep + now + '.zip'

if not os.path.exists(today):
os.mkdir(today)
print ('Successful created directory',today)

zip_commend = 'zip -r {0} {1}'.format(target,' '.join(source))#执行压缩的命令

print ("Zip command is:")
print (zip_commend)
print ('Running:')
if os.system(zip_commend) ==0:
print('Successful backup to',target)
else:
print('Backup FAILED')


这个不是那本书上的最后优化的版本,应该是第二个版本。
:以上所有程序都是Python,可能有的地方没有标记好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息