我需要通过python运行以下命令。
const item = {
a: 'A',
b: 'B',
circularProperty: {
a: 'A',
b: 'B',
circularProperty: {
a: 'A',
b: 'B'
}
}
};
let temp = item.circularProperty;
delete item.circularProperty;
console.log(item);
item.circularProperty = temp;
console.log(item);
我遇到的错误是/work/data/get_info name=Mike home
。这是不正确的。 get_info程序确实退出。
我正在尝试在python中获得相同功能的perl脚本中工作。
perl脚本
No such file or directory: '/work/data/get_info name=Mike home'
信息转储信息
我的python脚本
$ENV{work} = '/work/data';
my $myinfo = "$ENV{work}/bin/get_info";
$info = `$myinfo name=Mike home`;
我收到一个错误import os, subprocess
os.environ['work'] = '/work/data'
run_info = "{}/bin/get_info name={} {}".format(os.environ['work'],'Mike','home')
p = subprocess.call([run_product_info], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
答案 0 :(得分:0)
Python subprocess.call
认为整个字符串是程序的名称,就像自从将它作为数组传递以来,好像您对"/work/data/get_info name=Mike home"
进行了双引号一样。
要么通过不带外壳数组的数组(如果您确定所有转义/引用正确,并且请参阅文档中的警告),要么将其作为单独的数组元素传递。
subprocess.call(['/work/data/bin/get_info', 'name=Mike', 'home'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
subprocess.call('/work/data/bin/get_info name=Mike home', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
https://docs.python.org/3.7/library/subprocess.html#frequently-used-arguments
args是所有调用所必需的,并且应为字符串或程序参数序列。通常最好提供一个参数序列,因为它允许模块处理任何必需的参数转义和引用(例如,在文件名中允许空格)。如果传递单个字符串,则外壳程序必须为True(请参见下文),否则该字符串必须简单地命名要执行的程序而无需指定任何参数。