Python学习笔记四(Python OS模块)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/library/os)。
1)os.sep 可以取代操作系统特定的路径分割符(在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':')。

1
2
3
4
5
os.sep
'/ ’    #在Linux返回的是' / '
mysqldir  =  os.sep  +  'data'  +  os.sep  +  'mysql'  +  os.sep  +  '3306'     #定义mysql数据存放目录
mysqldir
'/data/mysql/3306'

2)返回path绝对路径。

1
2
os.path.abspath( 'iplist.txt' )
'/root/sh/py/iplist.txt'

3)将path分割成目录和文件名二元组返回。

1
2
3
mysqldir = '/data/mysql/3306/mysql.sock'
os.path.split(mysqldir)
( '/data/mysql/3306' 'mysql.sock' )

4)返回path的目录,其实就是os.path.split(mysqldir)第一个元素。

1
2
os.path.dirname(mysqldir)
'/data/mysql/3306'

5)返回path最后文件名,即os.path.split(mysqldir)第二个元素。

1
2
os.path.basename(mysqldir)
'mysql.sock'

6)如果path存在,返回True,如果path不存在,返回False。

1
2
3
4
os.path.exists(mysqldir)
True
os.path.exists( '/data/mysql/3308/mysql.sock' )
False

7)如果path是绝对路径,返回True,否则返回False。

1
2
3
4
os.path.isabs(mysqldir)
True
os.path.isabs( 'sfzhang.txt' )
False

8)如果path是一个存在的文件,返回True,否则返回False。

1
2
3
4
os.path.isfile( '/root/sh/iplist.txt' )
True
os.path.isfile( '/root/sh/' )
False

9)如果path是一个存在的目录,返回True,否则返回False。

1
2
3
4
os.path.isdir( '/root/sh' )
True
os.path.isdir( '/root/sh/sh' )
False

10)返回指定目录下的所有文件和目录名。

1
2
os.listdir( '/root/sh/py' )
[ 'send_email.py' '1.py' 'mymodule.pyc' 'mail.py' 'geturl.py' 'using_name.py' ]

11)连接目录与文件名

1
2
os.path.join( '/data/mysql/3306' , 'mysql.sock' )
'/data/mysql/3306/mysql.sock'

12)创建一个目录Create a directory。

1
2
3
4
5
6
os.mkdir( 'py' )     #创建单个目录
os.path.isdir( 'py' )      #判断是否创建成功
True
os.makedirs( 'aa/bb/cc' )     #创建多级目录
os.path.isdir( 'aa/bb/cc' )     #判断是否创建成功
True

13)删除目录。

1
2
os.rmdir( 'py' )     #删除单个目录
os.removedirs( 'aa/bb/cc' )     #删除多级目录

14)删除文件。

1
os.remove( 'sfzhang.txt' )

15)切换目录 Change the current working directory to the specified path. 

1
2
3
os.chdir( '/usr/local' )
os.path.abspath( '.' )    #查看是否切换成功
'/usr/local'

16)使用的操作系统的平台,比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。

1
2
os.name
'posix'

17)返回当前Python脚本工作的目录路径。

1
2
os.getcwd()
'/root/sh/py'

18)运行Linu型系统命令。

1
2
3
4
5
6
os.system( 'df -h' )
文件系统              容量  已用 可用 已用 %  挂载点
/ dev / sda2              9.7G   8.9G   335M   97 %  /
/ dev / sda5               28G    12G    16G   44 %  / data
/ dev / sda1               99M    18M    76M   19 %  / boot
tmpfs                  249M      0   249M    0 %  / dev / shm

19)返回当前系统的登陆用户。

1
2
os.getlogin()
'root'

20)目录遍历,该函数返回一个元组,该元组有3个元素,分别表示每次遍历的路径名,目录列表和文件列表。

1
2
3
4
5
for  in  os.walk( '/tmp/test' ):
...      print  i
...
( '/tmp/test' , [ 'jpg' ], [ 'file3' 'file1' 'file2' ])
( '/tmp/test/jpg' , [], [ '3.jpg' '2.jpg' '1.jpg' ])

上面是我总结的OS模块中常用的方法,利用这些方法可以编写简单的python脚本,在利用Linux计划任务可以完成自动化管理系统的目的。下面是参照python简明教程上面的一个脚本修改而来的备份目录或者文件的脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/local/bin/python
#sfzhang 20130619
import  os
import  time     #导入os和time模块
file  =  [ '/root/.ssh' , '/tmp' ]    #备份目录或者文件以list的形式指定
backup_dir  =  '/mnt/backup/'     #备份文件存放目录
date  =  time.strftime( '%Y%m%d' )     #备份文件时间戳(年月日)
target  =  backup_dir  +  'backfile'  +  date   +  '.tar.gz'     #备份文件完成路径和文件名
if  os.getlogin() ! =  'root' :      #非root用户不能执行该脚本,
     print  'Must root to run this python script!'
     exit ()
if  not  os.path.exists(backup_dir):    #判断备份目录是否存在,如果不存在,则创建
     os.mkdir(backup_dir)
     print  'Successfully created directory' ,backup_dir
tar_command  =  "tar -czvf '%s' %s"  %  (target, ' ' .join( file ))   #采用tar形式备份
if   os.system(tar_command)  = =  0 :     #备份成功或失败提示信息
     print  'Successful backup to' ,target
else :
     print  'Backup FAILED'









本文转自 sfzhang 51CTO博客,原文链接:http://blog.51cto.com/sfzhang88/1224879,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
179 62
|
19天前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
35 8
|
17天前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
23 4
|
3月前
|
Python
Python Internet 模块
Python Internet 模块。
140 74
|
2月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
178 23
|
4月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
155 63
|
4月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
146 61
|
4月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
4月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
4月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等