# -*-coding: utf-8 -*-
import os
import shutil
'''
OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。
'''
#------------------------- 常用的os模块函数 --------------------------
#-------------os.sep----------------
'''
os.sep 可以取代操作系统特定的路径分割符。
Windows系统通过是“\”,Linux类系统如Ubuntu的分隔符是“/”,而苹果Mac OS系统中是“:”。
使用os.sep代替系统分隔符可以实现跨平台,不用担心不能移植
Linux下一个路径, '/usr/share/python' 那么上面的 os.sep 就是 ‘/’
Windows下一个路径, '\usr\share\python' 那么上面的 os.sep 就是 '\'。
上面那个路经写成 os.sep+'usr'+os.sep+'share'+os.sep+'python', 系统就会自动替换成当前系统的路径分割符,不用人为修改
'''
strPath = os.sep + 'usr' + os.sep + 'share' + os.sep + 'python'
print(strPath)
#/usr/share/python
#-------------os.linesep----------------
'''
os.linesep 字符串给出当前平台使用的行终止符
#Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
'''
str1 = 'hello' + os.linesep + 'world' + os.linesep
print(str1)
#hello
#world
#
#-------------os.name----------------
'''
os.name 输出字符串指示正在使用的平台。如果是window 则用'nt'表示,对于Linux/Unix用户,它是'posix'。
'''
print(os.name)
#posix
#-------------os.system()----------------
'''
os.system() 运行shell命令。
'''
#os.system('cmd') #启动dos
#-------------os.getcwd()----------------
'''
os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径。
'''
print(os.getcwd())
#/Users/xxx/Documents/Python
#-------------os.chdir(path)----------------
'''
os.chdir(path) 改变当前路径到path路径中,即创建生成文件,操作文件的目录。
'''
#os.chdir(r'/Users/xxx/Documents') #设为目录/Users/xxx/Documents
#-------------os.listdir(path)----------------
'''
os.listdir() 返回指定目录下的所有文件和目录名。
path: 路径名
'''
print(os.listdir(os.getcwd()))
#['.DS_Store', '.idea', 'class_test.py', 'fileDir', 'os_test.py', 'os_test.py', 'hello.txt', 'str_test.py']
#-------------os.mkdir(path, mode=0777)----------------
'''
os.mkdir(path) 创建一个文件夹
path: 路径
mode: 操作权限
产生异常的可能原因:
(1) 路径不存在
(2) 同名文件夹已存在时
(3) 驱动器不存在
(4) 磁盘已满
(5) 磁盘是只读的或没有写权限
'''
os.mkdir('fileDir')
#-------------os.rmdir(path)----------------
'''
os.rmdir(path) 删除一个文件夹
path: 路径
产生异常的可能原因:
(1) path 不存在
(2) path 子目录中有文件或下级子目录
(3) 没有操作权限或只读
'''
os.rmdir('fileDir')
#-------------os.makedirs(path, mode=0777)----------------
'''
os.makedirs(path) 创建多层文件夹
path: 路径
mode: 操作权限
产生异常的可能原因:
(1) 磁盘路径不存在, 如 K:\dir1\dir2 K盘不存在时
(2) 同名文件夹已存在时
(3) 驱动器不存在
(4) 磁盘已满
(5) 磁盘是只读的或没有写权限
'''
os.makedirs('fileDir1/fileDir2/fileDir3')
#-------------os.rmtree(path)----------------
'''
os.rmtree(path) 删除一个文件夹以及内部的文件夹及文件
path: 路径
注意要引入: import shutil
产生异常的可能原因:
(1) path 不存在
(2) path 子目录中有文件或下级子目录
(3) 没有操作权限或只读
'''
shutil.rmtree('fileDir1')
#-------------创建文件----------------
'''
直接以'w'写的方式打开关闭文件即可
'''
filename = 'hello.txt'
f = open(filename, 'w')
f.close()
#-------------os.remove(filename)----------------
'''
os.remove(filename) 删除一个文件,非文件夹
filename: 文件名(带后缀名)
产生异常的可能原因:
(1) path 不存在(不管是文件还是文件夹)
(2) 驱动器不存在
(3) 磁盘已满
(4)磁盘是只读的或没有写权限
'''
os.remove('hello.txt')
#------------------------- 常用的os模块函数 之 path模块 --------------------------
#-------------os.path.basename(path)----------------
'''
os.path.basename(path) 返回传入路径的最后一个的文件名
'''
print(os.getcwd())
#/Users/xxx/Documents/Python
print(os.path.basename(os.getcwd()))
#Python
#-------------os.path.dirname(path)----------------
'''
os.path.dirname(path) 返回文件夹所在路径
'''
print(os.path.dirname(os.getcwd()))
#/Users/xxx/Documents
#-------------os.path.abspath(path)----------------
'''
os.path.abspath(path) 返回绝对路径
'''
print(os.path.abspath('os_test.py'))
#/Users/xxx/Documents/Python/os_test.py
#-------------os.path.isabs(path)----------------
'''
os.path.isabs(path) 是否为绝对路径
'''
print(os.path.isabs('os_test.py'))
#False
print(os.path.isabs('../Python/os_test.py'))
#False
print(os.path.isabs(os.getcwd()+'os_test.py'))
#True
#-------------os.path.commonprefix(path)----------------
'''
os.path.commonprefix(path) 返回list(多个路径)中,所有path共有的最长的路径
'''
print(os.path.commonprefix(['/Users/xxx/Documents/Python/', \
'/Users/xxx/', \
'/Users/xxx/Documents']))
#/Users/xxx/
#-------------os.path.exists(path)----------------
'''
os.path.exists(path) 该路径是否存在未被破坏, 是:返回True, 否:返回False
'''
print(os.path.exists(os.getcwd()))
#True
print(os.path.exists(os.getcwd()+'hhhh'+os.sep))
#False
#-------------os.path.getsize(path)----------------
'''
os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误
'''
print(os.path.getsize('os_test.py'))
#5503
print(os.path.getsize(os.getcwd()))
#442
#print(os.path.getsize(os.getcwd()+'hhhh'+os.sep))
#OSError: [Errno 2] No such file or directory:
#-------------os.path.isfile(path)----------------
'''
os.path.isfile(path) 是否为文件, 找不到也返回False
'''
print(os.path.isfile(os.getcwd()))
#False
print(os.path.isfile('os_test.py'))
#True
#-------------os.path.isdir(path)----------------
'''
os.path.isdir(path) 是否为文件夹, 找不到也返回False
'''
print(os.path.isdir(os.getcwd()))
#True
print(os.path.isdir('os_test.py'))
#False
#-------------os.path.join(path1[, path2[, ...]])----------------
'''
os.path.join(path1[, path2[, ...]]) 把文件和路径合成一个名, 用来拼接全名
'''
print(os.path.join(os.getcwd(), 'joindir','os_test.py'))
#/Users/xxx/Documents/Python/joindir/os_test.py
#-------------os.path.realpath(path)----------------
'''
os.path.realpath(path) 返回真是路径
'''
print(os.path.realpath('os_test.py'))
#/Users/xxx/Documents/Python/os_test.py
#-------------os.path.samefile(path1, path2)----------------
'''
os.path.samefile(path) 判断两个文件或者路径是否相同
'''
print(os.path.samefile('os_test.py', 'tuple_test.py'))
#False
print(os.path.samefile('os_test.py', 'os_test.py'))
#True
print(os.path.samefile(os.getcwd(), os.path.dirname(os.getcwd())))
#False
print(os.path.samefile(os.getcwd(), os.getcwd()))
#True
#-------------os.path.split(path)----------------
'''
os.path.split(path) 把路径分割成dirname和basename,返回一个元组
'''
print(os.path.split(os.path.abspath('os_test.py')))
#('/Users/xxx/Documents/Python', 'os_test.py')
#-------------os.path.splitext(path)----------------
'''
os.path.splitext(path) 分割文件扩展名,返回路径名和文件扩展名的元组
'''
print(os.path.splitext(os.path.abspath('os_test.py')))
#('/Users/xxx/Documents/Python/os_test', '.py')
print(os.path.splitext(os.getcwd()))
#('/Users/xxx/Documents/Python', '')
转载于:https://blog.51cto.com/guyuejinsheng/1767704