资讯专栏INFORMATION COLUMN

Python标准库os库的常用功能解析

89542767 / 560人阅读


  小编写这篇文章的主要目的,是用来告诉大家,在python标准库中,os常用功能解析的相关知识,大家要仔细进行阅读哦。


  1、目录操作


  1.1、获取当前目录


 #coding:utf-8
  import os
  #获取当前工作目录(绝对路径)
  print(os.getcwd())#E:newpythonProjectBlog
  #获取当前工作目录(绝对路径),值以Unicode编码返回
  print(os.getcwdb())#b'E:\new\pythonProject\Blog'
  #获取当前目录,以"."表示
  print(os.curdir)#.
  #获取当前目录的上级目录,以".."表示
  print(os.pardir)#..

0.png

  1.2、创建目录


  #coding:utf-8
  import os
  #创建目录,路径可以是绝对路径也可以是相对路径,linux系统运行的程序还需指定mode参数,即文件夹的权限
  #文件目录存在时,再次创建会执行报错,因此实际开发中创建目录需判断目录是否存在
  if os.path.lexists('./test'):#判断'./test'是否存在
  print("./test已经存在")
  else:
  os.mkdir('./test')#穿件'./test'目录,"."代表当前目录,等效于os.mkdir('test')
  print(os.listdir("E:\new\pythonProject\Blog"))
  #['config','config.txt','demo.py','image','Music','Python0S.py','test','__init__.py']
  #递归创建目录
  if os.path.lexists("E:\new\pythonProject\Blog\test\12\123"):
  pass
  else:
  os.makedirs('test\12\123')
  print(os.listdir("E:\new\pythonProject\Blog\test"))#['12']
  print(os.listdir("E:\new\pythonProject\Blog\test\12"))#['213']
  #os.makedirs('test\12\123')#error FileExistsError:[WinError 183]当文件已存在时,无法创建该文件。:'test\12\123'

1.png

  1.3、删除目录


  #coding:utf-8
  import os
  #删除单个目录
  #目录不存在时报错,删除时判断目录是否存在
  #os.rmdir('test123')#FileNotFoundError:[WinError 2]系统找不到指定的文件。:'test123'
  if os.path.lexists('test1'):
  os.rmdir('test1')
  else:
  print("test1目录不存在")
  #非空目录报错,删除时先判断是否是空目录,在进行删除
  if os.path.lexists('test2'):
  os.rmdir('test2')#OSError:[WinError 145]目录不是空的。:'test'
  else:
  print("test2目录不存在")
  #先判断目录是否存在,再判断目录是否非空目录,再进行相应的操作
  if os.path.lexists('test'):
  if os.listdir('test'):
  print("test目录非空")
  else:
  os.rmdir('test')
  else:
  print("test目录不存在")
  #删除多个目录
  #目录不存在时报错,开发时判断先判断目录是否存在再进行操作
  #os.removedirs('test123')#FileNotFoundError:[WinError 2]系统找不到指定的文件。:'test123'
  if os.path.lexists('test4'):
  os.removedirs('test4')
  else:
  print("test4目录不存在")
  #目录非空时报错,
  if os.path.lexists(r"test/12/213"):
  os.removedirs(r"test/12/213")
  else:
  print("test/12/213目录不存在")#test/12/213 test下只有12目录12只有213目录213目录为空,则删除test
  #删除22和44目录,11目录非空(存在33目录),因此11目录保留
  if os.path.lexists(r"11/22/44"):
  os.removedirs(r"11/22/44")
  else:
  print("11/22/44目录不存在")
  print(os.listdir())

3.png

  1.4、重命名目录


  #coding:utf-8
  import os
  #目录重命名
  #语法格式os.rename('oldName','newName')
  #原目录不存在时报错
  #os.rename('oldTest','newTest')#FileNotFoundError:[WinError 2]系统找不到指定的文件。:'oldTest'->'newTest'
  if os.path.lexists('oldTest'):
  os.rename('oldTest','newTest')
  else:
  print('oldTest目录不存在')
 if os.path.lexists('11'):
  os.rename('11','newTest')
  else:
  print('11目录不存在')

3.png

  1.5、切换目录


  #coding:utf-8
  import os
  #变更工作目录,将工作目录变更至E:newpythonProject,在Python中""均有转义字符的作用,
  #因此使用"\"将后面的""转移为""
  #从根目录起始的文件路径称之为绝对路径,根据当前位置起始的路径称之为相对路径
  print(os.getcwd())#E:newpythonProjectBlog
  #绝对路径
  os.chdir(r"E:newpythonProjectBlognewTest")
  print(os.getcwd())#E:newpythonProjectBlognewTest
  os.chdir(r"E:newpythonProjectBlog")
  print(os.getcwd())#E:newpythonProjectBlog
  #相对路径
  os.chdir("./newTest")
  print(os.getcwd())#E:newpythonProjectBlognewTest
  #切换到当前目录的上级目录
  os.chdir(os.pardir)
  print(os.getcwd())#E:newpythonProjectBlog

 6.png

   1.6、获取目录下的文件内容


  #coding:utf-8
  import os
  #获取目录下的文件内容
  #获取指定目录下的文件夹和文件的名称;只会查找指定目录的当前目录下的文件名和文件夹名称,不会查找下级的文件名和文件夹名称
  print(os.listdir("E:\new\pythonProject\Blog"))
  #默认当前目录
  print(os.listdir())
  #文件不存在时报错,使用时先判断目录是否存在
  #print(os.listdir(r"E:newpythonProjectBlog1"))
  #FileNotFoundError:[WinError 3]系统找不到指定的路径。:'E:\new\pythonProject\Blog1'
  if os.path.lexists(r"E:newpythonProjectBlog1"):
  print(os.listdir(r"E:newpythonProjectBlog1"))
  else:
  print("指定的目录不存在")
  1.7、判断目录是否存在
  1.8、判断是否是目录
  #coding:utf-8
  import os
  #目录不存在和非目录都返回False
  print(os.path.isdir(r'11'))#False
  print(os.path.isdir(r'config'))#False
  print(os.path.isdir(r'newTest'))#True
  1.9、判断是否是绝对路径
  #coding:utf-8
  import os
  #路径不存在和非绝对路径都返回False
  print(os.path.isabs(r'11'))#False
  print(os.path.isabs(r'config'))#False
  print(os.path.isabs(r'newTest'))#False
  print(os.path.isabs(r'E:newpythonProjectBlog'))#True


  2、文件操作


  文件的IO操作完成后必须关闭连接对象


  flags多个值时以|隔开


  2.1、读写文件


 #coding:utf-8
  import os
  #文件操作
  #文件的IO操作完成后必须关闭连接对象
  #常用格式os.open(path,flags,mode),mode一般为Linux系统文件操作的参数,设置文件权限
  """
  常用的flags:
  os.O_RDONLY:以只读的方式打开
  os.O_WRONLY:以只写的方式打开
  os.O_RDWR:以读写的方式打开
  os.O_NONBLOCK:打开时不阻塞
  os.O_APPEND:以追加的方式打开
  os.O_CREAT:创建或打开文件
  os.O_TRUNC:打开一个文件并截断它的长度为零(必须有写权限)
  """
  #flags多个值时以|隔开
  #以只读权限打开config文件,文件不存在时报错,先判断是否存在再进行操作,必要时需先判断是否为文件
  if os.path.lexists(r'E:new\pythonProjectBlogconfig.txt'):
  fd=os.open(r'E:new\pythonProjectBlogconfig.txt',os.O_RDONLY)
  #读取11个字符,从0开始计数
  print(os.read(fd,10))#b'12356789ab'
  os.close(fd)
  else:
  pass
  #写权限打开config文件
  fd1=os.open("E:\new\pythonProject\Blog\config.txt",os.O_WRONLY)
  #print(os.read(fd1,10))#OSError:[Errno 9]Bad file descriptor
  #将文件的前N个字符替换为新的字符,替换长度由替换的内容长度决定
  os.write(fd1,bytes('python','UTF-8'))#文件的读写都是以字节类型存取
  os.close(fd1)
  #文件存在打开,文件不存在新增
  fd2=os.open("E:\new\pythonProject\Blog\config.txt",os.O_RDWR)
  print(os.read(fd2,10))
  os.write(fd2,bytes('java','UTF-8'))
  print(os.read(fd2,10))
  os.close(fd2)


  #追加模式打开文件,必须具有写权限


  fd3=os.open("E:\new\pythonProject\Blog\config.txt",os.O_RDWR|os.O_APPEND)


  print(os.read(fd3,100))


  os.write(fd2,bytes('java','UTF-8'))


  os.close(fd2)


  2.2、创建文件


 #coding:utf-8
  import os
  """
  常用的flags:
  os.O_RDONLY:以只读的方式打开
  os.O_WRONLY:以只写的方式打开
  os.O_RDWR:以读写的方式打开
  os.O_NONBLOCK:打开时不阻塞
  os.O_APPEND:以追加的方式打开
  os.O_CREAT:创建或打开文件
  os.O_TRUNC:打开一个文件并截断它的长度为零(必须有写权限)
  """
  #创建空文件
  fd=os.open("text.txt",os.O_CREAT)
  os.close(fd)
  #创建文件并写入数据时须具有写权限
  fd=os.open("text.txt",os.O_CREAT|os.O_RDWR)
  os.write(fd,bytes('Yang','UTF-8'))
  os.close(fd)

  2.3、删除文件


  #coding:utf-8
  import os
  #文件不存在时报错
  if os.path.lexists('text.txt'):
  os.remove('text.txt')
  else:
  print("文件不存在")


  2.4、重命名文件


  #coding:utf-8
  import os
  #文件不存在时报错
  if os.path.lexists('text.txt'):
  os.rename('text.txt',"new.txt")
  else:
  print("文件不存在")


  2.5、文件判断


 #coding:utf-8
  import os
  #文件是否存在
  print(os.path.exists(r"E:newpythonProjectBlogconfig.txt"))#true
  #是否为文件
  print(os.path.isfile(r"E:newpythonProjectBlogconfig.txt"))#True


  3、路径操作


 #coding:utf-8
  import os
  #拼接
  print(os.path.join("11",'22','33','server.log'))#112233server.log
  #分离路径中的路径寄文件名
  print(os.path.split(r"E:newpythonProjectBlogconfig.txt"))#('E:\new\pythonProject\Blog','config.txt')
  print(os.path.split(r"E:newpythonProjectBlog"))#('E:\new\pythonProject','Blog')
  #获取路径中的文件名
  print(os.path.basename(r"E:newpythonProjectBlogconfig.txt"))#config.txt
  #获取路径中的路径名
  print(os.path.dirname(r"E:newpythonProjectBlogconfig.txt"))#E:newpythonProjectBlog
  #获取绝对路径
  print(os.path.abspath(r"Blogconfig.txt"))#E:newpythonProjectBlogBlogconfig.txt
  #分离文件拓展名
  print(os.path.splitext(r"E:newpythonProjectBlogconfig.txt"))#('E:\new\pythonProject\Blog\config','.txt')


  4、其他


 #coding:utf-8
  import os
  #显示当前使用系统平台。'nt'代表Windows,'posix'代表Linux
  print(os.name)#nt
  #分隔符
  print("11"+os.altsep+'server.log')#11/server.log
  print("11"+os.path.altsep+'server.log')#11/server.log
  #系统路径分隔符号;window为"",linux为"/"
  print(os.sep)#
  print(os.path.sep)#
  #获取文件名称和后缀之间的间隔符号
  print(os.extsep)#.
  print("--------")
  #换行符
  print(os.linesep)
  print("110"+os.linesep+'119')
  #执行操作系统指令
  os.system("dir")

  综上所述,知识就为大家介绍到这里了,希望可以为各位读者带来帮助。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127787.html

相关文章

  • Python基础之(十)模块

    摘要:是回调函数,当链接服务器和相应数据传输完毕时触发本函数可选。仅仅是针对的,在中,已经没有这个模块了,取代它的是。由于以流式读取文件,从而速度较快,切少占用内存,但是操作上稍复杂,需要用户实现回调函数。 编写模块 模块是程序 模块就是一个扩展名为.py的Python程序。 编写模块 #!/usr/bin/env python # coding=utf-8 lang = python 引...

    jlanglang 评论0 收藏0
  • Python爬虫学习路线

    摘要:以下这些项目,你拿来学习学习练练手。当你每个步骤都能做到很优秀的时候,你应该考虑如何组合这四个步骤,使你的爬虫达到效率最高,也就是所谓的爬虫策略问题,爬虫策略学习不是一朝一夕的事情,建议多看看一些比较优秀的爬虫的设计方案,比如说。 (一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量、数据结构、语法...

    liaoyg8023 评论0 收藏0
  • Python常见的配置文件写法梳理汇总

      关于Python,相比大家都不会陌生吧,那么,其中的一些配置文件是什么呢?有没有可能给大家去进行做一个汇总,汇总的内容还是比较的多的,包含写法等一些相关的知识,具体的一些相关汇总,下面给大家详细解答下。  前言  在这篇文章里所提到的环境变量种类其多元性由上至下到另一个先后提升:ini为何要写环境变量  在研发流程中,很多人都会使用一些固定不动主要参数或者整型变量。对于这类相对固定不动且经常使...

    89542767 评论0 收藏0
  • 通过demo学习OpenStack开发所需的基础知识 -- 单元测试

    摘要:本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述和中的单元测试的生态环境。另外,在中指定要运行的单元测试用例的完整语法是。中使用模块管理单元测试用例。每个项目的单元测试代码结构可 本文将进入单元测试的部分,这也是基础知识中最后一个大块。本文将重点讲述Python和OpenStack中的单元测试的生态环境。 单元测试的重要性 github上有个人画了一些不同语言的学...

    douzifly 评论0 收藏0
  • GoFrame框架之gtime时间模块,支持自定义时间格式化语法

    摘要:文章来源通用时间管理模块,封装了常用的时间日期相关的方法。并支持自定义的日期格式化语法,格式化语法类似的语法。示例,自定义时间格式化语法在该示例中,我们给定了四种格式,并将当前时间用这四种格式转换后打印出来。 文章来源:http://gf.johng.cn/494387 通用时间管理模块,封装了常用的时间/日期相关的方法。并支持自定义的日期格式化语法,格式化语法类似PHP的date语法...

    Bryan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<