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模块的补充使用---执行终端命令的更多相关文章

  1. day 19 os模块的补充 序列化 json pickle

    os   模块 os.path.abspath  规范绝对路径 os.path.split() 把路径分成两段,第二段是一个文件或者是文件夹 os.path.dirname    取第一部分 os.p ...

  2. python的pywinrm模块远程连接windows执行dos命令

    ----A机器远程连接B---- 在A机器上安装模块: pip install pywinrm 在B机器上配置winrm服务的相关配置,使其支持远程控制: (winrm服务是windows 一种方便远 ...

  3. Java 执行终端命令实现,调用执行另外一个Java文件

    Test.java package com.journaldev.files; public class Test { public static void main(String[] args) { ...

  4. python的subprocess模块执行shell命令

    subprocess模块可以允许我们执行shell命令 一般来说,使用run()方法就可以满足大部分情况 使用run执行shell命令 In [5]: subprocess.run('echo &qu ...

  5. os模块补充以及序列化模块

    os模块补充以及序列化模块   一.os模块的补充 1.os.path.abspath 能把存在的相对路径的绝对路径显示出来 path = os.path.abspath("连达day19. ...

  6. Python 使用OS模块调用 cmd

    在os模块中提供了两种调用 cmd 的方法,os.popen() 和 os.system()os.system(cmd) 是在执行command命令时需要打开一个终端,并且无法保存command命令的 ...

  7. python 执行shell命令

    1.os模块中的os.system()这个函数来执行shell命令 1 2 3 >>> os.system('ls') anaconda-ks.cfg  install.log  i ...

  8. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  9. python2.7执行shell命令

    python学习——python中执行shell命令 2013-10-21 17:44:33 标签:python shell命令 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...

随机推荐

  1. Java线上问题排查神器Arthas实战分析

    概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且deb ...

  2. 【以太坊剖析】以太坊虚拟机(EVM)之基本定义

    以太坊虚拟机(EVM) 以太坊虚拟机(Ethereum Virtual Machine,简称EVM)是一个基于栈的虚拟机,基于特定的环境数据,执行一系列的字节代码形式的指令,以修改系统状态.EVM目前 ...

  3. Linux Shell中的数组及遍历 转

    转自:http://www.linuxidc.com/Linux/2011-09/42929.htm 在Linux下使用shell的时候,为方便起见,偶尔会用到一下数组.数组的申明方式是: array ...

  4. SpringDataJpa打印Sql详情(含参数)

    Spring Data Jpa打印Sql详情(带sql参数) 这里使用的是 log4jdbc,yml配置文件里的数据源配置也要做相应的修改 pom文件引入 <dependency> < ...

  5. 有序取出Map集合的元素

    最近写到一个程序,返回了map,但是经过查阅资料,map是没有顺序的,各种查阅资料无果,最后自己写了这个方法.. 1,通过map集合的keySet()方法,获取到一个包含map所有key的Set集合 ...

  6. HTTP状态码100、200、300、400、500、600的含义

    1xx (临时响应)表示临时响应并需要请求者继续执行操作的状态代码. 100 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分. 101 (切换协议) 请 ...

  7. Lesson14——NumPy 字符串函数之 Par3:字符串信息函数

    NumPy 教程目录 1 字符串信息函数 1.1 numpy.char.count char.count(a, sub, start=0, end=None) 返回一个数组,其中包含 [start, ...

  8. 1、前端--HTML简介、head内常见标签、body内常见标签(特殊符号、div、span、a、img、列表、表格table、表单form)、标签两大属性

    今日内容 HTML简介 HTML是构造网页的骨架>>>:几乎所有的网站都是由HTML构建而成 HTML:超文本标记语言 # 不是一门编程语言 没有任何的逻辑 只有固定的标记功能 &q ...

  9. 用 Beep 函数让主板“唱”《生日歌》

    用 Beep 函数,让你的主板也会"唱歌".Beep 可以通过控制主板扬声器的发声频率和节拍来演奏美妙的旋律.本文就通过C#演示,调用Beep函数,演奏生日快乐歌.首先我们来看下 ...

  10. suse 12 编译部署 Nginx

    文章目录 编译前准备 创建nginx用户 下载nginx源码包 安装编译环境依赖 编译nginx 配置nginx为systemctl管理 Linux:~ # cat /etc/os-release N ...