OS模块的补充使用---执行终端命令
Python基础至os模块
- 由于近期的项目需要用到对应的终端命令去调用其他程序,因此温习一下os.system()函数;
- 参考文献:
https://zhuanlan.zhihu.com/p/51716674 - 参考文献:
https://www.cnblogs.com/MrRead/p/7832786.html
1.os.system()
- 错误用法
- os.system(""),该方法不具备连续性,属于子进程,因此每次使用都是重新开是
# -*- coding: utf-8 -*-
'''
@Time : 2021/11/17 10:07
@Author : ziqingbaojian
@File : 终端命令.py
'''
import os
os.system("cd ..")
os.system("cd ..")
os.system("cd envs")
os.system("cd test")
os.system("cd Script")
os.system("activate")
print(os.system("pip list"))
# 打印的为当前换进的包列表,并不是激活后的虚拟环境的包列表
原因:system函数可以将字符串转化成命令在服务器上运行;其原理是每一条system函数执行时,其会创建一个子进程在系统上执行命令行,子进程的执行结果无法影响主进程;

使用system执行多条命令
为了保证system执行多条命令可以成功,多条命令需要在同一个子进程中运行;
import os os.system('cd /usr/local && mkdir aaa.txt')
# 或者
os.system('cd /usr/local ; mkdir aaa.txt')
基于上述使用的扩展使用:
模拟环境: 在服务器上启动守护进程,直接启动也会有异常退出,毕竟守护进程也是有重启次数的, 这个时候就可以, 单独创建一个启动文件,用启动文件启动 程序。 再用守护进程启动这个 启动文件,做个异常处理,可以保证稳定启动
import os,time def start():
try
os.system('cd /usr/local && scrapy crawl yourSpiderName')
# 或者
os.system('cd /usr/local ; scrapy crawl yourSpiderName')
except Exception as e:
print('MyErrorAtStart: %s' % e)
time.sleep(10)
start()
if __name__ == '__main__':
start()
1.1返回值
三种返回值
- 0:成功
- 1:失败
- 2:错误
import os
res=os.system("cd ..")
print(res)# 0 执行成功
res=os.system("cd xxxxxxxx")
print(res)#1,并出现乱码,终端的提示信息
2.获取当前的文件的路径
print(os.getcwd())#获取当前脚本文件的路径
3.补充,查看路径
Linux
pwd
Windows
chidr # 终端查看当前的命令
补充Windows的命令
# 直接转换到其他盘
e: #直接切换到E盘 # 直接且换到跟目录
cd /
4.os.chdir()
修改工作路径、
print(os.getcwd())
os.chdir("E:\envs\crawjob\Scripts")
print(os.getcwd())
参数直接传入对应的路径

5、结合使用
由于需要多次执行路径切换的命令,因此可以先使用
os.chdir()方法进行参数的路径的修改,之后在进行虚拟环境的激活,随后启动项目# -*- coding: utf-8 -*-
'''
@Time : 2021/11/17 11:18
@Author : ziqingbaojian
@File : 终端执行2.py
'''
import os print(os.getcwd())
os.chdir("E:\envs\crawjob\Scripts")
print(os.getcwd())
res=os.system("activate && cd \ && cd project\prozhjy\djangocrawjob && python manage.py runserver 127.0.0.1:8001")
print(res)
使用连接符
&&进行连接多条命令;
踩坑不易,转载请注明出处;
OS模块的补充使用---执行终端命令的更多相关文章
- day 19 os模块的补充 序列化 json pickle
os 模块 os.path.abspath 规范绝对路径 os.path.split() 把路径分成两段,第二段是一个文件或者是文件夹 os.path.dirname 取第一部分 os.p ...
- python的pywinrm模块远程连接windows执行dos命令
----A机器远程连接B---- 在A机器上安装模块: pip install pywinrm 在B机器上配置winrm服务的相关配置,使其支持远程控制: (winrm服务是windows 一种方便远 ...
- Java 执行终端命令实现,调用执行另外一个Java文件
Test.java package com.journaldev.files; public class Test { public static void main(String[] args) { ...
- python的subprocess模块执行shell命令
subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...
- os模块补充以及序列化模块
os模块补充以及序列化模块 一.os模块的补充 1.os.path.abspath 能把存在的相对路径的绝对路径显示出来 path = os.path.abspath("连达day19. ...
- Python 使用OS模块调用 cmd
在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os.system()os.system(cmd) 是在执行command命令时需要打开一个终端,并且无法保存command命令的 ...
- python 执行shell命令
1.os模块中的os.system()这个函数来执行shell命令 1 2 3 >>> os.system('ls') anaconda-ks.cfg install.log i ...
- python中OS模块操作文件和目录
在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...
- python2.7执行shell命令
python学习——python中执行shell命令 2013-10-21 17:44:33 标签:python shell命令 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...
随机推荐
- 利用JGrapht对有向无环图进行广度优先遍历
环境需求:JDK:1.8 jar:jgrapht-core-1.01.jar package edu; import org.jgrapht.experimental.dag.DirectedAcyc ...
- Spring源码-IOC部分-容器简介【1】
实验环境:spring-framework-5.0.2.jdk8.gradle4.3.1 Spring源码-IOC部分-容器简介[1] Spring源码-IOC部分-容器初始化过程[2] Spring ...
- 【建议收藏】Redis超详细入门教程大杂烩
写在前边 Redis入门的整合篇.本篇也算是把2021年redis留下来的坑填上去,重新整合了一翻,点击这里,回顾我的2020与2021~一名大二后台练习生 NoSQL NoSQL(NoSQL = N ...
- Nginx网络压缩 CSS压缩 图片压缩 JSON压缩
一.序言 使用Nginx作为web应用服务时,会代理如下常见文件:js.css.JSON.图片等,本文提供基于Nginx内置的压缩技术,提供网络请求响应速度的解决方案. 1.网络压缩原理 网络压缩的原 ...
- CF 1394 简要题解
最近都会做一些 \(\rm Div1\) 套题中 \(3000\) 分以下的题目. A 直接枚举贪心即可. B 首先不难发现总共可能的 \(c\) 序列只有 \(k!\) 种,很明显要暴力枚举所有情况 ...
- 根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
项目需求 指定某区域(非省市区县乡镇标准行政区划),做功能边界分区,实现Echarts地理坐标数据可视化展示. 提供信息 项目分析 要在Echarts上实现地理坐标可视化,必须使用geoJSON格式文 ...
- PHP扩展开发编译环境的搭建
PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系 ...
- python基础语法_闭包详解
https://www.cnblogs.com/Lin-Yi/p/7305364.html 闭包有啥用??!! 很多伙伴很糊涂,闭包有啥用啊??还这么难懂! 3.1装饰器!!!装饰器是做什么的??其 ...
- drop、truncate、delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独 ...
- Solution -「NOI.AC 省选膜你赛」寄蒜几盒
题目 题意简述 给定一个含有 \(n\) 个顶点的凸多边形( \(n\) 是偶数),对于每一对相对的边(即中间有 \(\frac{n}2-1\) 条其它边),延长它们以将平面分割为多块,并把包含原 ...