OS模块的补充使用---执行终端命令
2024-09-04 23:17:43
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)
使用连接符
&&
进行连接多条命令;
踩坑不易,转载请注明出处;
最新文章
- js 相关知识整理(一)
- jni的使用方法
- JavaScript基础——使用数组
- Eclipse如何导出可执行jar包
- GridView導出Excel 解決亂碼問題
- yum在线升级
- C#进程启动实例
- jquery 实现全选反选
- 在PreparedStatement中设置空值
- Windows下如何建立以";.";开头的文件夹
- c#Winform程序的toolStripButton自己定义背景应用演示样例源代码
- css3的特效拓展...
- 机器人局部避障的动态窗口法(dynamic window approach) (转)
- Vuex原来可以这样上手
- Android 音视频编解码——RGB与YUV格式转换
- 【Python 10】汇率兑换3.0(while循环)
- 关于mysql设置外键,实现参照性完整性约束,以及workbench上的一个bug(?)
- Test Scenarios for a window
- Ubuntu12.04 root用户登录设置
- Python设计模式(六大)