当前位置:   article > 正文

python之os模块操作文件与文件夹_python中os模块文件夹

python中os模块文件夹

目录

执行系统命令

1、os模块

OS操作文件与文件夹

运行脚本程序

2、ShellExecute函数

相对路径打开文件

3、subprocess模块

打开新的cmd窗口并传入命令

用通配符的方式判断文件是否存在目录中


执行系统命令

1、os模块

OS模块是Python标准库中的一个用于访问操作系统功能的模块。使用OS模块中提供的接口,可以实现跨平台访问。常用操作:

  • 对目录、文件、文件夹的操作
  • 运行脚本程序

接下来是OS对文件与文件夹的操作

OS操作文件与文件夹

首先需要导入OS模块, import os

os.mkdir("hello")                             #在当前目录中创建一个"hello"文件夹

  • os.remove('文件或文件夹名')  #删除文件或文件夹(删除文件夹可能会提示拒绝访问)
  • os.rmdir('文件夹名')                #删除文件夹(成功删除)

  • os.rename('原文件/夹名', '新的文件/夹名')    #修改文件或文件夹的名字
  • os.chdir('../../')                                               #切换路径,在当前路径基础上往后退两级
  • os.replace("源文件","目标文件")                   #移动文件

  • os.getcwd()                                                  #获取当前的绝对路径
  • os.path.abspath("")                                      #获取当前的绝对路径
  • os.listdir()                                            #用列表的方式显示当前目录中所有的文件和文件夹
  • os.path.exists('文件或文件夹')            #判断当前目录中文件或者文件夹是否存在,存在则返回True,否则返回False
  • os.path.isdir("文件夹名")                     #判断是否为文件夹
  • os.path.isfile("文件名")                        #判断是否为文件

我将"获取文件所在绝对路径"的函数写在别的文件夹下的文件中,我在本文件中调那个获取绝对路径的函数,那么获取的依然是我现在这个文件所在的绝对路径

  1. 将目录和文件合成一个路径 os.path.join
  1. import os
  2. print(os.path.join(r'c:\e\f', 'pocs'))

运行脚本程序

os模块中的system()函数可以方便地运行其他程序或者脚本,相当于直接用鼠标双击程序。模式如下:

os.system(command)

  1. import os
  2. os.system('ipconfig') #执行cmd命令
  3. os.system('1.html') #默认浏览器打开1.html文件
  4. os.system('xx.exe') #运行exe程序
  5. os.system('xx.py -u http://1.1.1.1 ') #运行python脚本

os.system执行的结果会直接在控制台输出,且无法屏蔽输出。如果用变量接收执行的结果的话,其返回为状态码,0表示指令成功执行,1表示失败,256表示没有返回结果,适用于系统命令不需要输出内容的场景。

2、ShellExecute函数

只能用来启动应用程序或脚本。

除了使用os.system()函数外,还可以使用win32api模块中的ShellExecute()函数来运行其他程序,格式如下:

ShellExecute(hwnd, op, file, args, dir, show)

  • hwnd:    父窗口的句柄,如果没有父窗口,则为0
  • op :        要运行的操作,为open,print或者为空
  • file:        要运行的程序,或者打开的脚本
  • args:     要向程序传递的参数,如果打开的是文件则为空
  • dir :       程序初始化的目录
  • show:    是否显示窗口,1为显示,0为不显示
  1. # pip install pywin32
  2. import win32api
  3. win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 1) # 前台打开
  4. win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0) # 后台执行
  5. win32api.ShellExecute(0, 'open', 'notepad.exe', '1.txt', '', 1) # 使用notepad打开文件
  6. win32api.ShellExecute(0, 'open', 'http://www.sohu.com', '', '', 1) # 使用默认浏览器打开该网址
  7. win32api.ShellExecute(0, 'open', 'D:\\Opera.mp3', '', '', 1) # 播放视频
  8. win32api.ShellExecute(0, 'open', 'D:\\hello.py', '', '', 1) # 运行程序
  9. 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文件

方法如下

  1. import os
  2. filename = r".\result.\4.html"
  3. os.system(filename)

3、subprocess模块

subprocess模块是python从2.4版本开始引入的模块,主要用来取代 一些旧的模块方法,如os.system、os.spawn、os.popen、commands.*等。官方推荐使用该模块执行系统命令

该函数的好处在于可将命令执行的结果赋值给变量,方便处理

  1. from subprocess import PIPE, Popen
  2. # 返回的是 Popen 实例对象
  3. proc = Popen(
  4. 'nslookup www.baidu.com', # cmd特定的查询空间的命令
  5. stdin=None, # 标准输入 键盘
  6. stdout=PIPE, # -1 标准输出(演示器、终端) 保存到管道中以便进行操作
  7. stderr=PIPE, # 标准错误,保存到管道
  8. shell=True)
  9. outinfo, errinfo = proc.communicate()
  10. info = outinfo.decode('gbk')
  11. print(info)

 打开新的cmd窗口并传入命令

此命令会打开新的cmd窗口并向该窗口传入"ping baidu.com"的命令。此操作不是阻塞的,是同步进行的。但是打开窗口只能传递一个参数进去。

  1. import os
  2. os.system("cmd/c start ping baidu.com")
  3. print(111)

用通配符的方式判断文件是否存在目录中

如下,我们只输入公司名,然后判断当前目录是否存在带这个公司名的文件。这里使用fnmatch找到特定的文件

Python之文件查找模块fnmatch、glob及实际案例 - 腾讯云开发者社区-腾讯云

  1. target = "北京xx技术有限公司"
  2. import os,fnmatch
  3. for name in os.listdir():
  4. if fnmatch.fnmatch(name,"*%s*"%(target)):
  5. print(name)

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号