OS模块简单的来说它是一个Python的系统编程的操作模块,提供对操作系统进行调用的接口,可以处理文件和目录这些我们日常手动需要做的操作。os模块包含普遍的操作系统功能,与具体的平台无关


1. import 实际上是python虚拟机把当前的globals()和locals()传进__builtins__.__import__内置函数了,所以实际上干活的是那个__import__函数!


2. import对命名空间的影响

1)如果是python的内置模块,例如os模块。这些模块是随着python虚拟机启动而加载进来的,但是并没有暴露出来。我们可以通过dir()命令查看当前命名空间,可以看到,并没有看到像os,sys等模块。

>>> dir()  
['__builtins__''__doc__''__name__']  

但是如果执行import sys后,那就有了。

>>> import sys  
>>> dir()  
['__builtins__''__doc__''__name__''sys']  

 通过sys.modules这个字典(key: 模块名;value: 模块的路径),我们可以查看模块的信息。再通过id函数,我们可以知道两个sys模块是否为同一个模块,

>>> id(sys)   
135708788  
>>> id(sys.modules['sys'])  
135708788  

2)import只影响当前模块的命名空间

例如a.py里面有一句import bb,  而bb.py里面有一句import os,那么可以这样查看

>>>  import  a  
>>> dir()  
[ '__builtins__' '__doc__' '__name__' 'a' ]  
>>> dir(a)  
[ '__builtins__' '__doc__' '__file__' '__name__' 'bb'
>>> dir(a.bb)  

['__builtins__''__doc__''__file__''__name__''os']  


3). import package

合法的package必须含有一个__init__.py文件,package可以包含0个或多个module(py文件)。

常用的命令:

1. os.name——判断现在正在实用的平台,Windows 返回 ‘nt'; Linux 返回’posix'

2. os.getcwd()——得到当前工作的目录。

3. os.listdir()——指定所有目录下所有的文件和目录名。

4. os.remove()——删除指定文件

5. os.rmdir()——删除指定目录

6. os.mkdir()——创建目录

注意:这样只能建立一层,要想递归建立可用:os.makedirs()

7. os.path.isfile()——判断指定对象是否为文件。是返回True,否则False

8. os.path.isdir()——判断指定对象是否为目录。是True,否则False。        

 9. os.path.exists()——检验指定的对象是否存在。是True,否则False. 

10. os.path.split()——返回路径的目录和文件名,把目录和文件区分开     

11. os.system()——执行shell命令。

注意:此处运行shell命令时,如果要调用python之前的变量,可以用如下方式:

var=123
os.environ['var']=str(var) //注意此处[]内得是 “字符串”
os.system('echo $var')

13. os.chdir()——改变目录到指定目录

14. os.path.getsize()——获得文件的大小,如果为目录,返回0

15. os.path.abspath()——获得绝对路径。

16. os.path.join(path, name)——连接目录和文件名。

17.os.path.basename(path)——返回文件名

18. os.path.dirname(path)——返回文件路径

19. 获得程序所在的实际目录

os.path.realpath(sys.argv[0])

os.path.split(os.path.realpath(sys.argv[0]))

os.path.split(os.path.realpath(sys.argv[0]))[0]


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的大小  
#在Linux/Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杠。 
os.path.normcase('c:/windows\\system32\\')   #'c:\\windows\\system32\\'     
#规范化路径,如..和/  
os.path.normpath('c://windows\\System32\\../Temp/')   #'c:\\windows\\Temp' 
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__))))  

------*-*---------------------------------------------------------------------------------------------------------*-*----

更多详细内容请关注公众号:目标检测和深度学习

-------…^-^……----------------------------------------------------------------------------------------------------------…^-^……--


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐