首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >字符串格式化后找不到os.system命令

字符串格式化后找不到os.system命令
EN

Stack Overflow用户
提问于 2019-08-08 04:29:16
回答 1查看 597关注 0票数 0

我试图在os.system命令中传递一个变量,但是在字符串格式标记之后我得到了一个错误消息“命令未找到”。它似乎试图在字符串格式化之后作为命令执行文本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os

BOOT_VOLUME_ATTACHMENT_ID = os.popen("terraform output | grep volume_attachment_id | cut -d ' ' -f 3").read()

os.system('oci compute boot-volume-attachment detach --force  --wait-for-state DETACHED --boot-volume-attachment-id {0} --region region1' .format(BOOT_VOLUME_ATTACHMENT_ID))

其结果是错误如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh: line 1: --region: command not found

为什么python试图在字符串格式化后立即执行字符串作为命令?

I使用Python2.7

更新.

问题似乎是在变量BOOT_VOLUME_ATTACHMENT_ID中。如果我将这个变量更改为手动字符串,比如"123“,它可以正常工作。但是,如果我使用os.popen,则会看到上述错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 04:33:57

除了os.system以低于subprocess的方式出现外,可能的问题是.format()所做的替换过程。

与其使用代码,不如尝试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BOOT_VOLUME_ATTACHMENT_ID = "123"
print(repr('oci compute boot-volume-attachment detach --force  --wait-for-state DETACHED --boot-volume-attachment-id {0} --region region1'.format(BOOT_VOLUME_ATTACHMENT_ID)))

看看它输出了什么。

这将告诉您,在--region之前是否有什么奇怪的东西(例如,行中断)。

在您的问题更新之后,您的BOOT_VOLUME_ATTACHMENT_ID显然不是您声称的那样。相反,它包含一个不同程序的输出,在大多数情况下,在末尾添加一个行中断。

如果您以这样的方式将该内容插入到字符串中,则这个断行符将被传输到目标字符串中,并告诉shell执行两个命令。

解决方案是在.strip()调用之后立即使用os.popen()

关于子流程:

如果你这样做,你的程序就会变得更干净(例如,更少的注射倾向)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import subprocess
BOOT_VOLUME_ATTACHMENT_ID = "123"
subprocess.call(['oci', 'compute', 'boot-volume-attachment', 'detach', '--force', '--wait-for-state', 'DETACHED', '--boot-volume-attachment-id', BOOT_VOLUME_ATTACHMENT_ID, '--region', 'region1'])

原因是这避免了程序和oci之间的shell,从而消除了一个潜在的错误源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57412627

复制
相关文章
一行命令搭建内部的管道
在上一篇《边缘计算k8s集群之SuperEdge》文章中,笔者基于ECK搭建了边缘集群并添加了节点。通过边缘集群,我们可以很方便的管理各个地域的节点,本地、各云厂商的机房、客户所在地、海外的都可以。在本篇内容,我们将讲述如何使用ipsec-vpn-server,通过一行命令即可搭建内部的管道,用于锻炼技术,技术学习。
心莱科技雪雁
2021/03/09
2.3K0
一行命令搭建内部的管道
在上一篇《边缘计算k8s集群之SuperEdge》博客中,笔者基于ECK搭建了边缘集群并添加了节点。通过边缘集群,我们可以很方便的管理各个地域的节点,本地、各云厂商的机房、客户所在地、海外的都可以。在本篇内容,我们将讲述如何使用ipsec-vpn-server,通过一行命令即可搭建内部的管道,用于锻炼技术,技术学习。
雪雁-心莱科技
2021/03/05
2.9K0
一行命令搭建内部的管道
函数内部的this指向
这些 this 的指向,是当我们调用函数的时候确定的。调用方式的不同决定了this 的指向不同
清出于兰
2020/10/26
1.7K0
函数内部的this指向
Java——内部类使用总结(基本概念、定义内部类、static定义内部类、方法中定义内部类)
类的组成包括:成员、方法,几乎所有程序都不会对嵌套程序有什么限定,内部类指的是在一个类中继续嵌套其他类结构的一种代码形式,且理论上可以一直嵌套。
Winter_world
2020/09/25
5530
Java——内部类使用总结(基本概念、定义内部类、static定义内部类、方法中定义内部类)
Angular 自定义管道
本文将使用 UltimateAngular/angular-pro-src 中的示例,来一步步介绍自定义管道的相关知识。在该示例中,我们将定义一个 FileSizePipe 管道,它用于实现对文件大小进行格式化显示。
阿宝哥
2019/11/05
1.5K0
体验usually.js的管道函数——pipe函数
usually.js 是一个面向现代 Web 开发的 JavaScript 函数库,基于 ES6 开发。最新版本2.4.1,最新版本usually.js增加管道函数—— pipe 函数。什么是管道函数?管道函数,其作用是将前一步的结果直接传参给下一步的函数,从而省略了中间的赋值步骤,可以大量减少内存中的对象,节省内存。
用户6167509
2019/09/04
1K0
java内部类的作用(三)----定义使用回调函数的时候比较便捷---匿名内部类(anonymous)
匿名内部类(anonymous inner calss):将局部内部类的使用再深入一步。假如只创建这个类的一个对象,就不必命名了。这种类被称为匿名内部类。
wust小吴
2019/07/05
1.4K0
java内部类的作用(三)----定义使用回调函数的时候比较便捷---匿名内部类(anonymous)
内部函数与外部函数
函数是c语言程序中的最小单位,往往把一个函数或多个函数保存为一个文件,这个文件称为源文件。定义一个函数,这个函数就要被另外的函数所调用。但当一个源程序由多个源文件组成时,可以指定函数不能被其他文件调用,这样C语出又把函数分为两类:一个是内部函数,另一个是外部函数。
pigeon
2022/04/11
9820
Linux命名管道及函数
管道(pipe)应用的一大局限是没有名字,只能用于具有亲缘关系进程之间的通信。而命名管道,也称FIFO,实质是一种文件类型,通过FIFO可以用于任何两个进程间的通信。
xxpcb
2020/08/04
2.7K0
【Angular教程】自定义管道
这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。 二、内置的常用管道 具体API参照官网查询使用 DatePipe: 格式化日期 UpperCasePipe: 文本转为全部大写 LowerCasePipe: 文本转为全部小写 TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World) KeyValuePipe: 将对象转为键值对形式 JsonPipe: 转为JSON字符串
前端小鑫同学
2022/12/25
1.3K0
【Angular教程】自定义管道
Clojure集合管道函数练习
TDD讨论组里的申导最近在B站直播了Martin Fowler的经典文章Refactoring with Loops and Collection Pipelines中谈到的利用集合管道对循环进行函数式重构。视频地址在这里,申导的翻译在这里。组织者小波(Seaborn Lee)趁机出了一道关于集合管道函数题目。我就想啊,论函数式编程,舍Clojure其谁?而且我在Clojure很少能写出loop... recur这样偏底层的循环代码。话不多说,撸起袖子开工。
lambeta
2018/08/17
1.1K0
【说站】java内部类的内存泄漏原因
2、如果内部类只是在外部类中引用,当外部类不再引用时,外部类和内部类可以通过GC回收。
很酷的站长
2022/11/23
5630
【说站】java内部类的内存泄漏原因
详解javascript中的即时函数,内部函数,能重写自身的函数即时函数内部函数返回函数的函数能重写自己的函数小结
在上篇谈到匿名函数和回调函数的基础上,我们接着介绍javascript中的即时函数,内部函数,返回函数的函数,能重写自身的函数等几种常见的函数类型及使用方法。只需要大致了解匿名函数的概念,应该就能看懂这些内容
desperate633
2018/08/22
1.6K0
7.6 内部函数和外部函数
2、对变量而言,声明与定义的关系稍微复杂一些。在声明部分出现的变量有两种情况:一种是需要建立存储空间的,另一种是不需要建立存储空间的。前者称为定义性声明,简称定义;后者称为引用性声明。
小林C语言
2019/07/12
1.1K0
6.8 内部函数和外部函数
解释:只能被本文件中其他函数所调用,在定义内部函数时,在函数名和函数类型的前面加static,所以内部函数又称静态函数
小林C语言
2019/08/19
7510
react 函数内部调用全局函数
错误信息 react TypeError: Cannot read property 'up' of undefined at 错误信息 react Unhandled Rejection (TypeError): Cannot read property 'setState' of undefined
wo.
2021/06/15
2.7K0
Ionic3 自定义管道
本文根据官网的例子简单介绍Angular管道的创建和使用,Angular官方文档 创建管道 创建一个管道可以直接使用ionic cli 工具 ionic g pipe sxypie 和创建 指令基本类似,导入导出也是一样的。 sxypie.ts 代码如下 import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'sxypie', pure: true, //true表示纯管道, false表示非纯管道 })
spilledyear
2018/08/21
4150
Ionic3 自定义管道
静态内部类和内部类的区别_内部类不能定义为抽象类
参考静态内部类和非静态内部类的区别中提到的 正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则,我试验了一下 ,无论是静态类还是非静态类都可以写在接口里。
全栈程序员站长
2022/11/10
3480
静态内部类和内部类的区别_内部类不能定义为抽象类
linux系统编程之管道(一):匿名管道和pipe函数
该文介绍了Linux环境下C++编写高性能可扩展的进程通信程序的设计和实现,主要包括管道、命名管道、信号、共享内存、消息队列、互斥量等进程间通信方式,以及通过Boost.Asio库实现的高性能TCP/UDP通信,并结合实际应用场景给出了性能测试和对比分析。
s1mba
2017/12/26
2.2K0
linux系统编程之管道(一):匿名管道和pipe函数
php面试笔记(5)-php基础知识-自定义函数及内部函数考点
在面试中,考官往往喜欢基础扎实的面试者,而函数相关的考点,往往是大家容易忽视的一个点,今天冷月就来帮各位小伙伴们梳理一下,在面试中函数相关的注意点。
学长冷月
2020/08/02
5260

相似问题

在管道函数内部检查值

11

管道擦伤原因

13

函数内部的函数定义

20

函数内部定义函数

20

管道破裂的原因

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文