大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

os模块

 本章节内容:

    1、os路径处理
    2、os 模块的常用方法
    3、复习os模块常用的一些操作
    4、os.path模块
      4.1 os.path模块常用方法
      4.2常用方法列表
    5、作业
    6、扩展阅读

 

 

 

1、os路径处理

#方式一:推荐使用
import os
#具体应用
import os,sys
possible_topdir = os.path.normpath(os.path.join(
    os.path.abspath(__file__),
    os.pardir, #上一级
    os.pardir,
    os.pardir
))
sys.path.insert(0,possible_topdir)


#方式二:不推荐使用
os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))  #此方法添加的是临时路径

 

在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
>>> os.path.normcase('c:/windows\\system32\\')   
'c:\\windows\\system32\\'   
   

规范化路径,如..和/
>>> os.path.normpath('c://windows\\System32\\../Temp/')   
'c:\\windows\\Temp'   

>>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
>>> print(os.path.normpath(a))
/Users/jieli/test1

 

 

 

2、os 模块的常用方法

os模块中关于文件/目录常用的函数使用方法

 

2.1 getcwd() 和chdir(path)

import os
d = os.getcwd() #获取当前工作的目录
print(d)
os.chdir('D:\\')  #改变当前的工作目录,比如切换到D盘
print(os.getcwd())

 

2.2 listdir(path='.')

用于列举当前目录下有那些文件和子目录。path参数可以指定列举的目录,默认是‘.’ ,‘.’ 代表根目录,‘..’ 代表上一层目录

import os

a = os.listdir('.')
print(a)   # ['f.py', 'list1.py', 'os_orpd.py', 'pickle_1.py', 'record.txt']

b = os.listdir('C:\\')   #指定目录
print(b)

 

2.3 mkdir(path)

用于创建文件夹,如果改文件夹存在,则抛出FileExistsError异常

import os

os.mkdir("test")    #在当前工作目录下创建test
c = os.listdir()    #默认为当前工作目录
print(c)
#存在或报错, FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test'

 

2.4 makedirs(path)

用于创建多层目录:

os.makedirs(r'.\a\b\c')
print(os.listdir())

效果:

 

2.5 remove(path)、rmdir(path)和removedirs(path)

remove()函数用于删除指定的文件,注意是删除文件,不删除目录

rmdir()函数用于删除目录

removedirs()函数用于删除多层目录

import os

os.makedirs(r'.\a\b\c')    #创建多层文件目录
os.mkdir(r'.\m')          #创建单层目录  

print(os.listdir())
# ['a','m', 'f.py', 'list1.py', 'os_orpd.py', 'pickle_1.py', 'record.txt', 'test']

os.remove("record.txt")    #删除文件
os.rmdir(m)          #删除单层目录
os.removedirs(r"a\b\c")    #删除多层目录
print(os.listdir())

 

2.6 rename(old,new)

用于重命名为文件或文件夹

import os

print(os.listdir())
#['a', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test']

os.rename('test','test_new')  #修改文件的名称

os.rename('a','a_new')   #修改文件夹的名称
print(os.listdir()) 

#['a_new', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test_new']

 

2.7 system(command)

用于使用一些小工具和命令

import os

os.system('calc')   #计算器
os.system('cmd')
os.system('dir')
os.system('ipconfig')

 

2.8 walk(top)

作用是遍历top参数指定路径下的所有子目录,并将结果返回一个三元组(路径,[包含目录],[包含文件])

import os

print(os.listdir('.'))
#['a_new', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test_new']

for i in os.walk("a_new"):
    print(i)

"""
('a_new', ['b'], [])
('a_new\\b', ['c'], [])
('a_new\\b\\c', [], [])
"""

 

3、复习os模块常用的一些操作

 复习os模块常用的一些操作

 

4、os.path模块

os.path模块中关于路径常用的函数使用方法

 

4.1 os.path模块常用方法

 

basename(path) 和dirname(path)

import os.path

#获取文件的路径
print(os.path.dirname(r'.a\b\c\r.py'))  # .a\b\c
#获取文件的名称
print(os.path.basename(r'.a\b\c\r.py'))  #r.py

 

join(path1[,path2[,...]])

import os.path

#将文件名和路径名组合成一个完整的路径

a = os.path.join(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c','r.py')
print(a)

#D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py 

 

split(path)和splitext(path)

import os.path

#split()和splitext() 函数都用于分割路径
#split()函数分割路径和文件名 。(如果完全使用目录,也会把最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
# splitext()函数用于分割文件名和扩展名

#split()函数分割路径名和文件名 a = os.path.split(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py') print(a) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b\\c', 'r.py') #完全使用目录的情况 b = os.path.split(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c') print(b) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b', 'c') # splitext()分割文件名和扩展名 c =os.path.splitext(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py') print(c) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b\\c\\r', '.py')

 

getsize(file)

import os.path

#getsize()函数用于获取文件的尺寸,返回值是以字节为单位的

a = os.path.getsize(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\os_orpd.py')

print(a)    # 355

 

getatime(file)、getctime(file)和getmtime(file)

getatime(file) :获得文件的最近访问时间,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算

getctime(file) :获得文件的创建时间,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算

getmtime(file):获得文件的修改时间 ,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算

import os.path
import  time
path = r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\os_orpd.py'
temp1 = time.localtime(os.path.getatime(path))
print('os_orpd.py的最后访问时间是:',time.strftime("%d%b%Y%H:%M:%S",temp1))

temp2 = time.localtime(os.path.getctime(path))
print('os_orpd.py的创建时间是:',time.strftime("%d%b%Y%H:%M:%S",temp2))

temp3 = time.localtime(os.path.getmtime(path))
print('os_orpd.py的修改时间是:',time.strftime("%d%b%Y%H:%M:%S",temp3))


"""
os_orpd.py的最后访问时间是: 16Dec201817:46:48
os_orpd.py的创建时间是: 16Dec201816:10:50
os_orpd.py的修改时间是: 16Dec201817:46:48

"""

 

 4.2常用方法列表

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  运行shell命令,直接显示
os.environ  获取系统环境变量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

 

 

 

 

 

5、作业

 [课后作业] 第030讲:文件系统:介绍一个高大上的东西 | 课后测试题

 

6、扩展阅读

 py开发之路

py自动化常用模块

 

posted on 2018-12-16 16:09  pf42280  阅读(242)  评论(0)    收藏  举报