FAQ os.system调用失效问题
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
我的帖子:https://stackoverflow.com/questions/73524567/why-does-pythons-os-systemdir-return-1#
一个人的回复:https://stackoverflow.com/questions/31237544/in-python-interpreter-os-system-always-returns-1
摘录
I found a solution for this problem. I am posting the solution if someone faces the same problem in future. In my case, environment variable ComSpec was modified automatically by Microsoft SQL server update. I did modify it to the previous value, that was "%SystemRoot%\system32\cmd.exe". After modifying this environment variable, logoff and login again
最后夸一句stackoverflow,还是非常好的社区,只要你会问,基本都有有很好的答复,前提是得会问。
解决
远控该学员发现这个学员的comspec变量的值是2个一模一样的(如下内容),而我们一般都是一行。
%SystemRoot%\system32\cmd.exe
删除一行,保留一行
测试代码,ok,解决
引申
- 环境变量ComSpec指定命令提示符文件所在的路径与执行程序,貌似很简单
- 值可能会被一些软件更改(看原帖发现有人被SQL SERVER改了,这个学员的问题是被不知道什么软件double了)
- 这个值竟然会引起这个问题,没有好的解释(可能要微软专家来解释了)
- over
FAQ os.system调用失效问题的更多相关文章
- [Python陷阱]os.system调用shell脚本获取返回值
当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...
- Python os.system()调用.sh脚本
参考: python调用shell脚本的两种方法| Jeff的妙想奇境 已解决--求教python如何调用.sh文件- 查看主题• Ubuntu中文论坛 CODE #!/usr/bin/env pyt ...
- os.popen与os.system区别
os.system 调用系统命令,完成后退出,返回结果是命令执行状态,一般是0 os.popen 可以实现一个“管道”,从这个命令获取的值可以在python 中继续被使用 #该方法不但执行命令还返回执 ...
- os.system() 和 os.popen()
1.os.popen(command[, mode[, bufsize]]) os.system(command) 2.os.popen() 功能强于os.system() , os.popen() ...
- Python——cmd调用(os.system阻塞处理)
os.system(返回值为0,1,2) 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os.s ...
- 调用系统命令 os.system()和os.popen()
Python中os.system和os.popen区别 Python调用Shell,有两种方法:os.system(cmd)或os.popen(cmd)脚本执行过程中的输出内容.实际使用时视需求情况而 ...
- Python——cmd调用(os.system阻塞处理)(多条命令执行)
os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...
- python--DenyHttp项目(1)--调用cmd控制台命令os.system()
os.system() 参数传递cmd命令,命令执行成功返回0,失败返回1 在网上查看使用ping命令,能否Ping通 大神们有 用正则的,有用Popen() os.system()直接用返回值,简单 ...
- Python调用外部程序——os.system()和subprocess.call
通过os.system函数调用其他程序 预备知识:cmd中打开和关闭程序 cmd中打开程序 a.打开系统自带程序 系统自带的程序的路径一般都已加入环境变量之中,只需在cmd窗口中直接输入程序名称即可. ...
- python 多进程练习 调用 os.system命令
import sys import getopt import os import multiprocessing def list_all_file(path): """ ...
随机推荐
- Python基础之网络编程:2、OSI协议之七层协议
目录 Python基础之网络编程 一.网络编程前戏 二.OSI七层协议 简介: 1.物理连接层 2.数据链路层 网络相关专业名词 3.网络层 4.传输层 Python基础之网络编程 一.网络编程前戏 ...
- 20、求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数。
/* 求解从1到20000内的所有水仙花数:每位数字的n次方之和等于其本身,n是这个数的位数. 共五位数,设置一个数组用来保存数字的每一位,数组的有效长度就是该数的位数.最后读取数组的每位数字来判断水 ...
- iOS逆向之某多多App抓包
阅读此文档的过程中遇到任何问题,请关注公众号[移动端Android和iOS开发技术分享]或加QQ群[309580013] 1.目标 由于某多多App现使用longlink进行数据传输,使用charle ...
- git回滚操作系列
git回滚操作系列 准备工作 本地环境 线上环境 分支 master 场景1 线上环境回滚,同步线上与本地操作 线上环境当前与本地一致 先把线上回滚至早期 获取提交日志 [root@root]# gi ...
- ATM项目详解
内容概要: ATM项目 代码实操流程 ATM项目 # 需求: """ - 额度15000或自定义 - 支持多账户登录 - 可以查看账户余额 - 可以提现(可自定义手续费比 ...
- 数据结构初阶--顺序表(讲解+C++类模板实现)
顺序的概念与结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改. 一般分为两种:静态顺序表和动态顺序表 静态顺序表 #define ...
- jquery组件解决option选项框的样式自定义方案
记录一下今天工作中遇到的一个需求和自行找到的解决办法 需求: 在原始的select选项框中的增加一个标识.(我想增加一个具有样式的span元素,试了半天在option里无法添加span,更别说具有样式 ...
- Java锁的逻辑(结合对象头和ObjectMonitor)
我们都知道在Java编程中多线程的同步使用synchronized关键字来标识,那么这个关键字在JVM底层到底是如何实现的呢. 我们先来思考一下如果我们自己实现的一个锁该怎么做呢: 首先肯定要有个标记 ...
- <二>派生类的构造过程
派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部 ...
- 将 Vue.js 项目部署至静态网站托管,并开启 Gzip 压缩
摘要:关于使用 Nginx 开启静态网站 Gzip 压缩的教程已经有很多了,但是好像没几个讲怎么在对象存储的静态网站中开启 Gzip 压缩.其实也不复杂,我们一起来看下~ 本文分享自华为云社区< ...