Python内置模块OS,如何打造SHELL端文件处理器

发表于:2022-9-27 09:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zxhtom    来源:稀土掘金

  OS 模块
  在讲解包模块时我们提到通过 sys 模块进行查看全局包路径查看于注册,今天我们尝试了解下OS模块,这个模块主要作用就是打通程序于系统之间的通信。
  通过 help('modules') 我们能够发现 OS 是作为python的内置模块出现的。
  带path
  判断文件
  import os
  print(os.path.isfile('demo.txt'))
  如果是文件则返回 True 否则返回 False 。
  判断文件夹
  import os
  print(os.path.isdir('../os'))
  其中参数我们传递一个路径,如果是文件夹返回 True 否则返回 False。
  判断文件是否存在
  这个应该是我们经常在脚本中使用的操作,存在我们则使用不存在则需要创建文件填充默认内容。
  import os 
  print(os.path.exists('ttttt.txt'))
  同样如果存在则返回 True 否则返回 False 。
  获取文件大小
  我们经常在服务器上通过 ls -al 查看文件信息,其中就包括文件大小这个属性,作为 python 内置的模块肯定也少不了相关的属性获取功能。
  import os 
  print(os.path.getsize('demo.txt'))
  获取路径及文件
  之前在操作 Java 时经常需要获取文件所在目录,当时都是通过Java对象属性获取的,而 Python 中自动帮我们处理了。
  获取绝对路径
  不知道你有没有注意到上面我们获取脚本所在目录时通过 ../os 等方式,包括获取路径及文件章节中我们手动敲出来文件的完整路径,实际上通过python自带了。
  import os
  print(os.path.abspath('practice.py'))
  返回文件名
  import os
  print(os.path.basename('practice.py'))
  获取文件路径
  仅限我们传入了全路径的文件 dirname 才起作用,这个感觉有点鸡肋
  路径拼接
  我们经常会出现路径地址的拼接。windows , linux 文件分隔符不一样,Java 中给我们提供了一个获取分隔符的变量,但是python 直接忽略掉分隔符了,直接给我们提供一个拼接的方法。
  import os 
  print(os.path.join('parent','child'))
  不带path
  获取平台
  有的时候我们需要根据不同平台来执行不同的操纵,这个时候就需要获取到平台信息了。
  import os
  print(os.name)
  获取所有文件
  既然是模块肯定少不了我们常用的功能,之前提到过了我们经常在服务器上执行 ls -al .
  import os 
  print(os.listdir)
  当前工作路径
  很多时候我们不回直接在脚本路径执行脚本,往往都是通过绝对路径或者相对路径来执行脚本,有的时候脚本会依赖执行路径上的某些文件,所以获取执行脚本路径至关重要。
  目录操作
  关于文件目录新建删除相信也很重要吧。下面我们来看看如何操作。
  import os 
  os.mkdir('test')
  print(os.getcwd()+'工作下的文件列表'+os.listdir())
  os.rmdir('test')
  重命名文件
  import os 
  os.rename(old,new)
  文件属性
  我们能够看到打印了很多属性。
  修改权限杀死进程
  os.chmod(file)
  os.get_terminal_size()
  os.kill(10884,signal.SIGKILL)
  打通shell
  作为一个shell爱好者,我还是很喜欢使用shell 来实现的,尤其是在做系统初始化的时候这个时候没有python ,而shell 是linux 系统自带的,所以shell 脚本的时候还是很有必要的,我个人也是shell+python 相互辅佐的存在。我们知道shell 中直接 python xxx.py。 但是python 如何执行shell 呢?
  import os 
  name=os.system('ls -al') 
  上面我们提到获取平台信息 os.name ,我们可以根据这个命令来通过 os.system('cmd') 指定不同系统的cmd 命令。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号