我可能在这里遗漏了一些明显的东西,但搜索 google/so 并没有提供任何有用的东西。
我正在编写一个使用 tkinter
的 python 脚本的filedialog.askopenfilename
打开文件选择器。没有深入细节,我有以下行,用于将文件选择器带到屏幕的前面(直接取自 this helpful answer ):
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
正如您从上面的代码片段中看到的那样,这一行对于 pep8 指南来说太长了,我想将其分解。
然而,尽管我尽了最大的努力,我似乎无法让它 split 。这是由于(我认为)该行包含单引号和双引号,不幸的是 os.system 似乎坚持它是单行。
我试过了
\
在末尾,+
在每行开头)如果相关:使用 OSX 并运行 python 3.6.4。
打破这条线的正确(理想情况下,最小)方法是什么?
最佳答案
使用大大改进的 subprocess
模块通常是调用外部可执行文件的更好、更强大、更安全的方法。
您当然可以使用 \n
传递变量在他们作为论据。
注意,双 (())
是因为第一个参数是一个元组。
import subprocess
subprocess.call((
'/usr/bin/osascript',
'-e',
'tell app "Finder" to set frontmost of process "Python" to true',
))
有时有理由通过 shell 调用,但通常不会。
https://docs.python.org/3.6/library/subprocess.html
关于python-3.x - os.system 的多行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50032845/