前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python和shell常用基本命令的对应关系

python和shell常用基本命令的对应关系

作者头像
AsiaYe
发布2019-12-18 16:45:57
1K0
发布2019-12-18 16:45:57
举报
文章被收录于专栏:DBA随笔DBA随笔

python和shell常用基本命令的对应关系

平时工作的过程中,我个人习惯用python写后端的逻辑,然后使用shell写一些Linux环境下面的脚本,对于python脚本的使用,其实还是比较少的,最近在尝试逼迫自己使用python来写脚本,一开始的时候,还真的是有点不太适应,这两天慢慢的摸到一些门道,其实python脚本的写法和后端逻辑的写法差不多。

今天的内容就说说shell命令在python脚本中是怎么对应的实现的。这里列举一些例子,大家可以对比一下:

1、获取当前目录,相当于shell中的pwd命令

代码语言:javascript
复制
>>> os.getcwd()
'/private/var/root'

2、改变当前脚本目录,相当于shell中的cd命令

代码语言:javascript
复制
>>> os.chdir('/tmp/')
>>> os.getcwd()
'/private/tmp'

3、创建目录,相当于shell中的mkdir -p命令,我们可以看到当我们创建了目录之后,就可以直接使用chdir切换到刚才的目录下面了。

代码语言:javascript
复制
>>> os.makedirs('/tmp/yeyz/test')
>>> os.chdir('/tmp/yeyz/test')
>>> os.getcwd()
'/private/tmp/yeyz/test'

当然,还有一个os.mkdir()的命令,这个命令相当于shell中没有使用-p参数时候的情况,如果该目录存在,则无法创建成功。

4、递归删除,相当于rm -rf 命令

代码语言:javascript
复制
>>> os.removedirs('/tmp/yeyz/test')
>>> os.chdir('/tmp/yeyz/test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: '/tmp/yeyz/test'
>>> os.chdir('/tmp/yeyz/')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 2] No such file or directory: '/tmp/yeyz/'
>>> os.chdir('/tmp/')
>>> os.getcwd()
'/private/tmp'

我们可以看到,当我们删除掉之后,再想进入之前的目录,就会报错了。

5、列举当前目录下的所有文件,类似于shell中的ls命令

代码语言:javascript
复制
>>> os.listdir('.')
['.keystone_install_lock', 'com.apple.launchd.Haenu0YBGr', 'com.google.Keystone', 'powerlog', 'KSDownloadAction.kArMUqmIGL', 'KSInstallAction.XG3CXseysP', 'com.apple.launchd.ImXO2x8tjW', 'com.sogou.inputmethod', 'KSOutOfProcessFetcher.u4BE7MILoK']

可以看到,返回的值是一个list,拿到这个list之后,我们可以使用代码对它进行循环,然后依次进行处理

6、当然,我们可以使用os.system直接执行shell命令,如下的方法,我们使用system的方法直接执行pwd命令,和我们使用getcwd的方法的结果是一样的。

代码语言:javascript
复制
>>> os.system('pwd')
/private/tmp
0
>>> os.getcwd()
'/private/tmp'

大家可能还注意到了,返回了一个多余的0,它的意思是该命令执行成功,如果执行不成功,则会返回一个错误的code

代码语言:javascript
复制
>>> os.system('pwdddd')
sh: pwdddd: command not found
32512

7、文件名称改动,类似于shell中的mv 操作

代码语言:javascript
复制
>>> os.system('touch aaa.txt')
0
>>> os.system('ls')
aaa.txt                    powerlog
0
>>> os.system('pwd')
/private/tmp
0
>>> os.rename('aaa.txt','bbb.txt')
>>> os.system('ls')
bbb.txt                    powerlog
0

8、将目录和文件拆分成一个二元组,os.psth.split

代码语言:javascript
复制
>>> path = os.getcwd()
>>> print(os.path.split(path))
('/private', 'tmp')

这个功能还是很实用的,如果你的目录是个文件,就可以很方便的拿到这个文件的上级目录

os.path还有其他的一些函数,例如:

os.path.exists()方法可以判断当前的目录是否存在,

os.path.dirname()方法,其实就是split方法的第一个元素

os.path.isfile()方法,可以判断路径是否是一个文件

os.path.isdir()方法,可以判断给的路径是否是一个文件夹

9、sys.exit(n)方法,相当于shell中异常退出的exit 1命令

在Python中,正常退出可以不用写代码,执行完毕退出的时候,exit的值就是0,当遇到异常的时候,就可以使用sys.exit(1)的方法告诉程序当前执行过程中出现了问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档