python中os库的一些基本操作

os.listdir(path)

  • path:需要列出的目录路径
  • 返回指定路径下的文件和文件夹列表

os.mkdir(path[, mode]) # 以数字权限模式创建目录。默认的模式为 0777 (八进制)

  • path:要创建的目录,可以是相对路径或者绝对路径
  • mode:要为目录设置的权限数字模式
  • 该方法没有返回值;如果目录有多级,则创建最后一级,如果最后一级目录的上级目录有不存在的,则会抛出一个 OSError;若要创建的文件已存在,则无法创建该文件,会报错

os.makedirs(path[, mode]) # 递归创建目录

  • path:需要递归创建的目录,可以是相对路径或者绝对路径
  • mode:要为目录设置的权限数字模式
  • 该方法没有返回值;若要递归创建的文件已存在,则无法创建该文件,会报错

os.getcwd():返回的是当前工作目录(不包含当前文件);如果是函数调用,则返回最外层函数的工作目录
os.path.join():将多个路径组合后返回
语法:os.path.join(path1, path2, …)
os.path.isdir(dir) # 判断对象是否为一个目录;需要传入的参数是绝对路径
os.path.isfile(file) # 判断对象是否为一个文件;需要传入的参数是绝对路径
os.path.abspath(__ file __ ):指代当前文件的绝对路径
os.path.realpath(__ file __ ):指代当前文件的绝对路径
os.path.dirname(path):去掉当前文件名,返回目录;与getcwd()作用类似
os.path.basename(__ file __ ):只获取当前文件的名字

os.system()和os.popen()是Python与操作系统进行交互的两个方法,都可以执行shell命令。
如果想连续执行多条命令,可以有下几种方式:

  • 命令被";"分隔,则多条命令会顺序执行下去
  • 命令被"&&"分隔,则多条命令会顺序执行下去,遇到执行错误的命令会停止
  • 命令被"||"分隔,则多条命令会顺序执行下去,遇到执行成功的命令会停止,后面的所有命令都将不执行
import os

print(os.system('cd F:/SwinTrack'))  # 0;返回一个状态码,0表示执行成功
print(os.popen('cd F:/SwinTrack'))  # 返回一个文件对象
---------
0
<os._wrap_close object at 0x000001F393F933D0>

# 如果想看到具体的值,可以使用以下代码
f = os.popen('cd F:/SwinTrack')
print(f.readlines())
---------
[]

'''
如果想直接看到运行结果的话,应该使用os.system();如果需要获取返回值,并对其做进一步的处理,则使用os.popen()。
os.system()方法可以将字符串转化为命令在服务器上运行,每一个system()方法运行时,都会创建一个子进程在系统上执行相应命令,子进程的执行结果无法影响主进程。
os.system()是阻塞的,它没执行完,后面的代码就不会执行;os.popen()是非阻塞的,即使没执行完也可以继续执行后面的代码。
os.system()=fork+exec+waitpid,即相当于先后调用了fork、exec、waitpid来执行外部命令,执行完毕后会回到原来的程序中继续执行后面的代码;使用fork()函数会在进程中建立一个新的进程,称之为子进程;exec是一个函数簇,由六个函数组成,exec是直接用新的进程去代替原来的程序运行,运行完毕后不回到原来的程序。
os.popen()会先创建一个管道,然后fork一个子进程,关闭管道的一端,执行exec,最后返回一个标准的io文件指针;popen()本身是非阻塞的,需要通过调用标准的io读取使它阻塞。
'''

你可能感兴趣的:(Python,python,深度学习,人工智能,计算机视觉)