如何学习python的os模块
发布时间:2025-05-13 12:00:00 发布人:远客网络
一、如何学习python的os模块
Python os模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。(一语中的)
输出字符串指示正在使用的平台。如果是window则用'nt'表示,对于Linux/Unix用户,它是'posix'。
函数得到当前工作目录,即当前Python脚本工作的目录路径。
返回指定目录下的所有文件和目录名。
>>> os.listdir(os.getcwd())
['Django','DLLs','Doc','include','Lib','libs','LICENSE.txt','MySQL-python-wininst.log','NEWS.txt','PIL-wininst.log','python.exe','pythonw.exe','README.txt','RemoveMySQL-python.exe','RemovePIL.exe','Removesetuptools.exe','Scripts','setuptools-wininst.log','tcl','Tools','w9xpopen.exe']
>>> os.system('dir')
>>> os.system('cmd')#启动dos
6、os.sep可以取代操作系统特定的路径分割符。
7、os.linesep字符串给出当前平台使用的行终止符
'\r\n'#Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
函数返回一个路径的目录名和文件名
>>> os.path.split('C:\\Python25\\abc.txt')
('C:\\Python25','abc.txt')
9、os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
>>> os.path.isdir(os.getcwd())
>>> os.path.isfile('a.txt')
10、os.path.exists()函数用来检验给出的路径是否真地存在
>>> os.path.exists('C:\\Python25\\abc.txt')
>>> os.path.exists('C:\\Python25')
11、os.path.abspath(name):获得绝对路径
12、os.path.normpath(path):规范path字符串形式
13、os.path.getsize(name):获得文件大小,如果name是目录返回0L
14、os.path.splitext():分离文件名与扩展名
>>> os.path.splitext('a.txt')
15、os.path.join(path,name):连接目录与文件名或目录
>>> os.path.join('c:\\Python','a.txt')
'c:\\Python\\a.txt'
>>> os.path.join('c:\\Python','f1')
'c:\\Python\\f1'
16、os.path.basename(path):返回文件名
>>> os.path.basename('a.txt')
>>> os.path.basename('c:\\Python\\a.txt')
17、os.path.dirname(path):返回文件路径
>>> os.path.dirname('c:\\Python\\a.txt')
二、python os模块怎么使用
1. os.name——判断现在正在实用的平台,Windows返回‘nt'; Linux返回’posix'。
2. os.getcwd()——得到当前工作的目录。
3. os.listdir()——指定所有目录下所有的文件和目录名。
以列表的形式全部列举出来,其中没有区分目录和文件。
4. os.remove()——删除指定文件。
5. os.rmdir()——删除指定目录。
注意:这样只能建立一层,要想递归建立可用: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.getcwd()——获得当前工作的目录(get current work dir)。
12. os.system()——执行shell命令。
注意:此处运行shell命令时,如果要调用python之前的变量,可以用如下方式:
var=123os.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)——返回文件路径。
细节——os.path.spilit()把目录和文件区分开。
三、python 中 os.system 的本质
在Python中使用os模块时,os.system实际上是如何调用shell命令的?接下来,我们将探讨这一问题。
首先,让我们明确系统环境。当前使用的系统为macOS 10.15.6(x86_64架构),Python版本为3.8.5。强调系统环境是因为Python在不同版本和系统上实现可能存在差异。
接下来,让我们深入到os模块。通过调用help(os)可以查看模块的源代码,其中包含了os模块的具体实现。在macOS平台上,os模块实质上是对posix模块的封装。
进一步探索,我们关注subprocess模块的实现细节。它提供了与shell交互的高级接口,允许用户执行外部命令并获取其输出。
接下来,让我们讨论posix模块。posix模块是类Unix系统兼容标准,代表直接编译到Python可执行文件中。在module的config.c中,我们可以找到相关转接代码。
对于内置模块,我们还能继续深入探索。首先,我们需要了解当前Python虚拟机的实现方式。在macOS系统中,CPython是其虚拟机实现,它是开源的。因此,我们可以从cpython源码中找到相关细节。最终,我们发现posix.system调用了C语言的system函数。
深入C语言的system函数并非我们的目标,因为关于C/C++的详细介绍在网络上有大量资源可供参考。
综上所述,macOS系统下,os.system调用路径如下:
os.system-> posix.system-> C的system函数
至此,我们详细解析了os.system在Python中是如何调用shell命令的,从os模块到posix模块,再到底层的C语言系统调用,这一过程清晰明了。