这是我参与2022首次更文挑战的第29天,活动详情查看:2022首次更文挑战
简介
本篇文章中来接收如何在Python程序中调用系统的相关指令,将介绍system、popen、subprocess这三种方式的用法
linux shell 命令
方法一:system调用
#仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
import os
os.system('ls')
方法二:popen()函数
import os
os.popen('ls').readlines() #这个返回值是一个list
方法三.使用模块 subprocess
- subprocess.call:父进程会等待子进程的结束,并获得call函数的返回值
- subprocess.check_all:check_all()与call()唯一的区别在于返回值。如果args执行之后的返回值为0,那么check_all返回0;如果返回值不为0,那么将raise出来一个CalledProcessError
- subprocess.check_output:子进程执行args中的命令,并将其输出形成字符串返回
- Popen.poll():检查子进程的状态,查看子进程是否结束
- Popen.wait():等待子进程的结束
- Popen.communicate(input=None):与子进程进行交互
- Popen.send_signal(signal):向子进程发送信号
- Popen.terminate():停止(stop)子进程
- Popen.kill():杀死子进程
import subprocess
subprocess.call('ls') #可以直接call()调用
'''
#也可以使用subprocess.Popen
p = subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
print(line)
'''
- os.chdir("目标目录") #修改当前工作目录
- os.getcwd() #获取当前工作目录
- os.listdir(dir) : 获取指定目录下的所有子目录和文件名
- os.rename(原文件名,新文件名) : 对文件或目录改名
import os
path=input('请输入文件路径(结尾加上/):')
#获取该目录下所有文件,存入列表中
f=os.listdir(path)
n=0
for i in f:
#设置旧文件名(就是路径+文件名)
oldname=path+f[n]
#设置新文件名
newname=path+'a'+str(n+1)+'.JPG'
#用os模块中的rename方法对文件改名
os.rename(oldname,newname)
print(oldname,'======>',newname)
n+=1