赞
踩
目录
OS模块是Python标准库中的一个用于访问操作系统功能的模块。使用OS模块中提供的接口,可以实现跨平台访问。常用操作:
接下来是OS对文件与文件夹的操作
首先需要导入OS模块, import os
增
os.mkdir("hello") #在当前目录中创建一个"hello"文件夹
删
改
查
我将"获取文件所在绝对路径"的函数写在别的文件夹下的文件中,我在本文件中调那个获取绝对路径的函数,那么获取的依然是我现在这个文件所在的绝对路径
- import os
- print(os.path.join(r'c:\e\f', 'pocs'))
os模块中的system()函数可以方便地运行其他程序或者脚本,相当于直接用鼠标双击程序。模式如下:
os.system(command)
- import os
- os.system('ipconfig') #执行cmd命令
- os.system('1.html') #默认浏览器打开1.html文件
- os.system('xx.exe') #运行exe程序
- os.system('xx.py -u http://1.1.1.1 ') #运行python脚本
os.system执行的结果会直接在控制台输出,且无法屏蔽输出。如果用变量接收执行的结果的话,其返回为状态码,0表示指令成功执行,1表示失败,256表示没有返回结果,适用于系统命令不需要输出内容的场景。
只能用来启动应用程序或脚本。
除了使用os.system()函数外,还可以使用win32api模块中的ShellExecute()函数来运行其他程序,格式如下:
ShellExecute(hwnd, op, file, args, dir, show)
- # pip install pywin32
- import win32api
- win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 1) # 前台打开
- win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0) # 后台执行
- win32api.ShellExecute(0, 'open', 'notepad.exe', '1.txt', '', 1) # 使用notepad打开文件
- win32api.ShellExecute(0, 'open', 'http://www.sohu.com', '', '', 1) # 使用默认浏览器打开该网址
- win32api.ShellExecute(0, 'open', 'D:\\Opera.mp3', '', '', 1) # 播放视频
- win32api.ShellExecute(0, 'open', 'D:\\hello.py', '', '', 1) # 运行程序
- win32api.ShellExecute(0, 'open', '2.html', '', '', 1) # 打放html文件
ps:
当os.system正在使用某个文件时,再使用os.system则会提示程序正在占用。此时使用ShellExecute()函数则能够继续操作该文件
又比如使用os.system打开了某文件时,必须要关闭了文件,程序才会往下执行,否则程序就卡在那(如果同类型的文件已经打开了则不会卡,会继续往下执行)。说明os.system会占用当前程序。
有时候需要以相对路径打开文件,如下result文件夹和test.py文件同时位于ray目录下,此时test.py要打开当前同目录result下的4.html文件
方法如下
- import os
- filename = r".\result.\4.html"
- os.system(filename)
subprocess模块是python从2.4版本开始引入的模块,主要用来取代 一些旧的模块方法,如os.system、os.spawn、os.popen、commands.*等。官方推荐使用该模块执行系统命令
该函数的好处在于可将命令执行的结果赋值给变量,方便处理
- from subprocess import PIPE, Popen
-
- # 返回的是 Popen 实例对象
- proc = Popen(
- 'nslookup www.baidu.com', # cmd特定的查询空间的命令
- stdin=None, # 标准输入 键盘
- stdout=PIPE, # -1 标准输出(演示器、终端) 保存到管道中以便进行操作
- stderr=PIPE, # 标准错误,保存到管道
- shell=True)
- outinfo, errinfo = proc.communicate()
- info = outinfo.decode('gbk')
- print(info)
此命令会打开新的cmd窗口并向该窗口传入"ping baidu.com"的命令。此操作不是阻塞的,是同步进行的。但是打开窗口只能传递一个参数进去。
- import os
- os.system("cmd/c start ping baidu.com")
- print(111)
如下,我们只输入公司名,然后判断当前目录是否存在带这个公司名的文件。这里使用fnmatch找到特定的文件
Python之文件查找模块fnmatch、glob及实际案例 - 腾讯云开发者社区-腾讯云
- target = "北京xx技术有限公司"
- import os,fnmatch
- for name in os.listdir():
- if fnmatch.fnmatch(name,"*%s*"%(target)):
- print(name)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。