我可能会在这里找到一些显而易见的东西,但搜索google / so并没有提供任何有用的信息。
我正在编写python脚本,使用
/***
Defined in the header file:
std::vector<Term *> terms;
For brevity, I've removed other function definitions....***/
void Document::compareToDoc(Document *myDoc) {
for(auto const& term : myDoc->getTerms()) {
//auto it = find(terms.begin(), terms.end(), term);
auto it = find_if(terms.begin(), terms.end(),
[](const Term *t1){return t1->getTerm() = term->getTerm();});
if(it != terms.end()) {
std::cout << " .. found" << std::endl;
} // end if
} // end for
} // compareToDoc
tkinter
来打开文件选择器。在没有深入细节的情况下,我有以下一行,用于将文件选择器带到屏幕的前面(直接从this helpful answer获取):
filedialog.askopenfilename
从上面的代码片段中可以看出,对于pep8指南而言,这一行太长了,我想将其分解。
然而,尽管我付出了最大的努力,但我似乎无法分开。这是因为(我认为)该行包含单引号和双引号,不幸的是os.system似乎坚持认为它是单行。
我已经尝试了
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
在最后,\
在每行的开头)如果相关:使用OSX并运行python 3.6.4。
打破这条线路的正确(理想情况下,最小化)方法是什么?
答案 0 :(得分:3)
使用经过改进的subprocess
模块通常是一种更好,更强大,更安全的方式来调用外部可执行文件。
您当然可以将带有\n
的变量作为参数传递。
注意,double (())
是因为第一个参数是一个元组。
import subprocess
subprocess.call((
'/usr/bin/osascript',
'-e',
'tell app "Finder" to set frontmost of process "Python" to true',
))
有时候有理由通过shell调用,但通常不会。