os.system 的多行命令
Multi line command to os.system
我可能在这里遗漏了一些明显的东西,但搜索 google/so 没有提供任何有用的东西。
我正在编写 python 脚本,利用 tkinter
的 filedialog.askopenfilename
打开文件选择器。无需详细介绍,我有以下行,用于将文件选择器带到屏幕前面(直接取自 this helpful answer):
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
从上面的代码片段可以看出,这一行对于 pep8 指南来说太长了,我想把它分解一下。
然而,尽管我尽了最大努力,但我似乎无法让它分裂。这是因为(我认为)该行包含单引号和双引号,不幸的是 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 打电话,但通常情况下不会。
我可能在这里遗漏了一些明显的东西,但搜索 google/so 没有提供任何有用的东西。
我正在编写 python 脚本,利用 tkinter
的 filedialog.askopenfilename
打开文件选择器。无需详细介绍,我有以下行,用于将文件选择器带到屏幕前面(直接取自 this helpful answer):
os.system('''/usr/bin/osascript -e 'tell app "Finder" to set frontmost of process "Python" to true' ''')
从上面的代码片段可以看出,这一行对于 pep8 指南来说太长了,我想把它分解一下。
然而,尽管我尽了最大努力,但我似乎无法让它分裂。这是因为(我认为)该行包含单引号和双引号,不幸的是 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 打电话,但通常情况下不会。