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

简介: python内置模块OS 如何打造SHELL端文件处理器

OS 模块

  • 在讲解包模块时我们提到通过 sys 模块进行查看全局包路径查看于注册,今天我们尝试了解下OS模块,这个模块主要作用就是打通程序于系统之间的通信。
  • 通过 help('modules') 我们能够发现 OS 是作为python的内置模块出现的。



26.png

带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'))
复制代码

获取路径及文件

27.png

之前在操作 Java 时经常需要获取文件所在目录,当时都是通过Java对象属性获取的,而 Python 中自动帮我们处理了。

获取绝对路径


不知道你有没有注意到上面我们获取脚本所在目录时通过 ../os 等方式,包括获取路径及文件章节中我们手动敲出来文件的完整路径,实际上通过python自带了。

 import os
 print(os.path.abspath('practice.py'))
复制代码


image.png

返回文件名

 import os
 print(os.path.basename('practice.py'))
复制代码

29.png

获取文件路径

30.png


  • 仅限我们传入了全路径的文件 dirname 才起作用,这个感觉有点鸡肋

路径拼接

  • 我们经常会出现路径地址的拼接。windows , linux 文件分隔符不一样,Java 中给我们提供了一个获取分隔符的变量,但是python 直接忽略掉分隔符了,直接给我们提供一个拼接的方法。
 import os 
 print(os.path.join('parent','child'))
复制代码


31.png

不带path

获取平台

  • 有的时候我们需要根据不同平台来执行不同的操纵,这个时候就需要获取到平台信息了。
 import os
 print(os.name)
复制代码

32.png

获取所有文件

  • 既然是模块肯定少不了我们常用的功能,之前提到过了我们经常在服务器上执行 ls -al .
1.  import os
2.  print(os.listdir)

image.png

当前工作路径

  • 很多时候我们不回直接在脚本路径执行脚本,往往都是通过绝对路径或者相对路径来执行脚本,有的时候脚本会依赖执行路径上的某些文件,所以获取执行脚本路径至关重要。


image.png


目录操作

  • 关于文件目录新建删除相信也很重要吧。下面我们来看看如何操作。
 import os 
 os.mkdir('test')
 print(os.getcwd()+'工作下的文件列表'+os.listdir())
 os.rmdir('test')
复制代码

35.png

重命名文件

 import os 
 os.rename(old,new)
复制代码

文件属性


image.png

  • 我们能够看到打印了很多属性。
属性 作用
st_mode 权限模式
st_ino 节点号
st_dev 驻留的设备
st_nlink 节点连接数
st_uid 拥有者用户
st_gid 所属组ID
st_size 文件大小
st_atime 上次访问时间
st_mtime 最后一次修改时间
st_ctime 操作系统报告的ctime


37.png

修改权限杀死进程

 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 命令。
相关文章
|
10天前
|
缓存 Shell 开发工具
[oeasy]python064_命令行工作流的总结_vim_shell_python
本文总结了命令行工作流中的关键工具和操作,包括vim、shell和Python。主要内容如下: 1. **上次回顾**:完成了输入输出的代码编写,并再次练习了vim的使用。 2. **shell基础**:介绍了shell环境及其基本命令,如`pwd`、`cd`、`ll -l`等。 3. **Python游乐场**:通过`python3`命令进入Python交互环境,可以进行简单计算和函数调用,常用函数有`help`、`ord`、`chr`等。 4. **vim编辑器**:详细讲解了vim的三种模式(正常模式、插入模式、底行命令模式)及其切换方法,以及常用的底行命令如`:w`、`:q`、`
57 15
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
56 20
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
64 12
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
3月前
|
Python
文件元数据获取方法对比:`os.path` 与 `os.stat`
本文对比了Python中两种获取文件元数据的方法:`os.path`和`os.stat`。通过示例代码展示了如何获取文件大小和修改时间,并从性能、功能性和代码可读性三方面进行了详细对比。最终给出了根据具体需求选择合适方法的最佳实践建议。
49 2
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63
|
3月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
3月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
3月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性