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

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

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

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

1、获取当前目录,相当于shell中的pwd命令>>> os.getcwd()

'/private/var/root'

2、改变当前脚本目录,相当于shell中的cd命令>>> os.chdir('/tmp/')

>>> os.getcwd()

'/private/tmp'

3、创建目录,相当于shell中的mkdir -p命令,我们可以看到当我们创建了目录之后,就可以直接使用chdir切换到刚才的目录下面了。>>> os.makedirs('/tmp/yeyz/test')

>>> os.chdir('/tmp/yeyz/test')

>>> os.getcwd()

'/private/tmp/yeyz/test'

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

4、递归删除,相当于rm -rf 命令>>> os.removedirs('/tmp/yeyz/test')

>>> os.chdir('/tmp/yeyz/test')

Traceback (most recent call last):

File "", line 1, in

OSError: [Errno 2] No such file or directory: '/tmp/yeyz/test'

>>> os.chdir('/tmp/yeyz/')

Traceback (most recent call last):

File "", line 1, in

OSError: [Errno 2] No such file or directory: '/tmp/yeyz/'

>>> os.chdir('/tmp/')

>>> os.getcwd()

'/private/tmp'

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

5、列举当前目录下的所有文件,类似于shell中的ls命令>>> 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的方法的结果是一样的。>>> os.system('pwd')

/private/tmp

0

>>> os.getcwd()

'/private/tmp'

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

sh: pwdddd: command not found

32512

7、文件名称改动,类似于shell中的mv 操作>>> 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>>> 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)的方法告诉程序当前执行过程中出现了问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,你可以使用内置的`subprocess`模块来运行shell命令,并处理命令的输入和输出。`subprocess`提供了一种强大且灵活的方式来执行系统命令,包括获取命令的输出(stdout)和错误输出(stderr)。 以下是一个简单的例子,展示了如何执行shell命令并接收其输入和输出: ```python import subprocess # 命令及其输入(可选) command = 'echo "Hello from shell!"' input_data = 'Your input here' # 只适用于支持输入的命令,如bash的read -p # 创建子进程 process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE) # 如果有输入数据,写入子进程 if input_data: process.stdin.write(input_data.encode()) # 对字符串进行编码,因为子进程需要字节流 process.stdin.flush() # 确保数据被立即发送 # 获取输出和错误信息 stdout, stderr = process.communicate() # 输出是bytes类型,可能需要解码为str output_str = stdout.decode('utf-8') error_str = stderr.decode('utf-8') if stderr else '' print(f"Output: {output_str}") print(f"Error: {error_str}") ``` 在这个例子中,`communicate()`方法会阻塞直到命令完成,返回的是一个包含命令标准输出和标准错误的元组。如果需要交互式地获取命令的输入,可以使用`stdin.write()`方法。 相关问题: 1. `subprocess.Popen`创建了一个什么对象? 2. `stdout=PIPE`和`stdin=PIPE`参数的作用是什么? 3. 如何处理`communicate()`方法返回的输出和错误?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值