我有一个命令行工具,我运行如下:
import { Component } from '@angular/core';
import { Invoice } from './invoice.model';
import { InvoiceLineItems } from './invoice-line-item.model';
@Component({
selector: 'create-invoice',
templateUrl: 'create-invoice/create-invoice.html'
})
export class CreateInvoiceComponent {
model: Invoice = new Invoice(
85,
'CAD',
null,
[ // lineItems
new InvoiceLineItems('Web development for BAnQ'),
new InvoiceLineItems('Sept 1 to 3', 14, 910),
new InvoiceLineItems('Sept 5 to 10', 34, 5293),
new InvoiceLineItems('Sept 11 to 20', 24, 5293),
new InvoiceLineItems('Sept 21 to 38', 11, 2493),
],
13989,
100,
200,
15000,
'',
null,
'$'
);
getTotal(): number {
return this.model.lineItems.reduce(
(a, b): number => a + (isNaN(b.total) ? 0 : b.total),
0);
}
}
换句话说,它需要一长串+和-s作为命令行参数,用空格分隔。我试图用Python调用它。在ipython中我做了:
/home/user/Dennis --+-+--+-----+--+++-+-+-- --+-++-+---+--+--++-++++- +--+---++++-+++-++-+-++++ --+-----+---+--++++---++- ----+----++++++-++++---+- ----------++-----++------ +--++-+-++++---+++--+++++ +-+-----++-+++-----+++-++ -++++--+-++--++---++-+++- +--++++-++----+---+--++-+ +++----+--++-+++-+--+++++ -++++-+-++++-+++------+++ -++-++-+--++--+---+-+---+ +-+++---+---++--+++--+--+ ++-+-+--++--+-------+-+-- ---++--+-+--+-+++-+++---- -+---+++-------+++-+----- +-+--------++++++--+-++-+ ++++-+++++++++-----+++++- -+++++-+---+-++---++++--- +-+---+++-+---+-++--++--- +-+-++-++++-+---------+-+ +-+++---++-----+-+--+--++ ++++++-+-++--+----++-+-+- ---+--++--------+++--+---
-5258461839360
我的猜测是造成问题的空间。
如何从命令行获得相同的输出?
答案 0 :(得分:2)
拆分outstr
并将列表中的拆分字符串传递给check_call()
。在当前代码中进行更改的最简单方法是将其设为:
from subprocess import check_call
outstr = "--+-+--+-----+--+++-+-+-- --+-++-+---+--+--++-++++- +--+---++++-+++-++-+-++++ --+-----+---+--++++---++- ----+----++++++-++++---+- ----------++-----++------ +--++-+-++++---+++--+++++ +-+-----++-+++-----+++-++ -++++--+-++--++---++-+++- +--++++-++----+---+--++-+ +++----+--++-+++-+--+++++ -++++-+-++++-+++------+++ -++-++-+--++--+---+-+---+ +-+++---+---++--+++--+--+ ++-+-+--++--+-------+-+-- ---++--+-+--+-+++-+++---- -+---+++-------+++-+----- +-+--------++++++--+-++-+ ++++-+++++++++-----+++++- -+++++-+---+-++---++++--- +-+---+++-+---+-++--++--- +-+-++-++++-+---------+-+ +-+++---++-----+-+--+--++ ++++++-+-++--+----++-+-+- ---+--++--------+++--+---"
check_call_args = ["/home/user/Dennis"] + outstr.split(' ')
check_call(check_call_args)
其中str.split(' ')
会将您的字符串拆分为由空格' '
分隔的子字符串列表。