os.system调用失效问题

背景

  • 有个学员反馈allure无法生成报告

    # 示例代码
    import pytest,os def test_os():
    pass if __name__ == '__main__':
    pytest.main(['-sv',__file__,'--alluredir','./report','--clean-alluredir'])
    os.system(f'allure serve ./report')
  • 瞄了一眼代码,怀疑是pycharm运行模式问题(详见我之前的帖子关于allure和pycharm的运行模式)

  • 她说改过了

  • 仔细观察发现,report目录下是会生成内容的,但os那一行就不执行

调试

  • 我把她的代码变为如下

    import os
    os.system('dir')
  • 运行一样没有任何返回

  • 继续排查,直接用IDLE来试试

    >>> import os
    >>> os.system('dir')
    -1
    >>>
  • 看来跟pycharm无关,跟python都无关,跟操作系统有关。

  • bing、百度、谷歌都用上了,没搜到(可能是没有搜对)

  • 只能提交到stackoverflow了(国内的思否效率不如)

two days later....

stackoverflow

解决

  • 远控该学员发现这个学员的comspec变量的值是2个一模一样的(如下内容),而我们一般都是一行。

    %SystemRoot%\system32\cmd.exe
  • 删除一行,保留一行

  • 测试代码,ok,解决

引申

  • 环境变量ComSpec指定命令提示符文件所在的路径与执行程序,貌似很简单
  • 值可能会被一些软件更改(看原帖发现有人被SQL SERVER改了,这个学员的问题是被不知道什么软件double了)
  • 这个值竟然会引起这个问题,没有好的解释(可能要微软专家来解释了)
  • over

FAQ os.system调用失效问题的更多相关文章

  1. [Python陷阱]os.system调用shell脚本获取返回值

    当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...

  2. Python os.system()调用.sh脚本

    参考: python调用shell脚本的两种方法| Jeff的妙想奇境 已解决--求教python如何调用.sh文件- 查看主题• Ubuntu中文论坛 CODE #!/usr/bin/env pyt ...

  3. os.popen与os.system区别

    os.system 调用系统命令,完成后退出,返回结果是命令执行状态,一般是0 os.popen 可以实现一个“管道”,从这个命令获取的值可以在python 中继续被使用 #该方法不但执行命令还返回执 ...

  4. os.system() 和 os.popen()

    1.os.popen(command[, mode[, bufsize]])  os.system(command) 2.os.popen() 功能强于os.system() , os.popen() ...

  5. Python——cmd调用(os.system阻塞处理)

    os.system(返回值为0,1,2) 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os.s ...

  6. 调用系统命令 os.system()和os.popen()

    Python中os.system和os.popen区别 Python调用Shell,有两种方法:os.system(cmd)或os.popen(cmd)脚本执行过程中的输出内容.实际使用时视需求情况而 ...

  7. Python——cmd调用(os.system阻塞处理)(多条命令执行)

    os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...

  8. python--DenyHttp项目(1)--调用cmd控制台命令os.system()

    os.system() 参数传递cmd命令,命令执行成功返回0,失败返回1 在网上查看使用ping命令,能否Ping通 大神们有 用正则的,有用Popen() os.system()直接用返回值,简单 ...

  9. Python调用外部程序——os.system()和subprocess.call

    通过os.system函数调用其他程序 预备知识:cmd中打开和关闭程序 cmd中打开程序 a.打开系统自带程序 系统自带的程序的路径一般都已加入环境变量之中,只需在cmd窗口中直接输入程序名称即可. ...

  10. python 多进程练习 调用 os.system命令

    import sys import getopt import os import multiprocessing def list_all_file(path): """ ...

随机推荐

  1. 😊SpringBoot 整合 Elasticsearch (超详细).md

    SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...

  2. JAVA-注解之 TODO、FIXME、XXX

    TODO.FIXME.XXX    //TODO : 表示待实现的功能    //FIXME: 代码存在Bug,不能Run或运行结果不正确,需要修复    //XXX  : 勉强可以工作,但是实现的方 ...

  3. Idea在windows和mac中的一些快捷指令

    从 Windows 过度到 Mac 必备快捷键对照表 Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Contro ...

  4. MySQL 是怎么加行级锁的?为什么一会是 next-key 锁,一会是间隙锁,一会又是记录锁?

    大家好,我是小林. 是不是很多人都对 MySQL 加行级锁的规则搞的迷迷糊糊,一会是 next-key 锁,一会是间隙锁,一会又是记录锁. 坦白说,确实还挺复杂的,但是好在我找点了点规律,也知道如何如 ...

  5. vulnhub靶场之VIKINGS: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DRIPPING BLUES: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhu ...

  6. MySQL进阶实战4,MySQL索引详解,下篇

    一.索引 索引是存储引擎用于快速查找记录的一种数据结构.我觉得数据库中最重要的知识点,就是索引. 存储引擎以不同的方式使用B-Tree索引,性能也各有不同,各有优劣.例如MyISAM使用前缀压缩技术使 ...

  7. Blazor Server完美实现Cookie Authorization and Authentication

    Blazor server-side application用Microsoft.AspNetCore.Identity.EntityFrameworkCore实现Authorization 和 Au ...

  8. 【SQL进阶】【REPLACE/TIMESTAMPDIFF/TRUNCATE】Day01:增删改操作

    一.插入记录 1.插入多条记录 自己的答案: INSERT INTO exam_record(uid, exam_id, start_time, submit_time, score) VALUES ...

  9. 【每日一题】【奇偶分别中心扩展/动态规划】2022年2月5日-NC最长回文子串的长度

    描述对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度. 方法1:奇数偶数分别从中心扩展 import java.util.*; public c ...

  10. Docker的作用

    绝大部分应用,开发者都可以通过docker build创建镜像,通过docker push上传镜像,用户通过docker pull下载镜像,用docker run运行应用. 用户不需要再去关心如何搭建 ...