我正在尝试使用subprocess.Popen
在notepad ++中打开一个文本文件我尝试了以下代码的许多变体,但它们都不起作用:
subprocess.Popen(['start notepad++.exe', 'C:\Python27\Django_Templates\QC\postits.html'])
subprocess.Popen(['C:\Program Files (x86)\Notepad++\notepad++.exe', 'C:\Python27\Django_Templates\QC\postits.html'])
必须有办法做到这一点。
注:
我想使用subprocess.Popen而不是os.system,因为我想轮询以确定程序是否仍处于打开状态并在关闭后执行某些操作。
所以,这是以下代码块的一部分:
process = subprocess.Popen(.....)
while process.poll() is None:
sleep(10)
DO SOMETHING AFTER FILE CLOSES
如果Popen不是最好的方法,我会对任何允许我轮询我的系统(Windows)的解决方案持开放态度,以确定notepad ++是否仍处于打开状态,并允许我在关闭后执行某些操作。
答案 0 :(得分:1)
我希望问题是你的路径分隔符是反斜杠,它是Python字符串转义字符。
改为使用原始字符串:
subprocess.Popen([
r'C:\Program Files (x86)\Notepad++\notepad++.exe',
r'C:\Python27\Django_Templates\QC\postits.html'
])
或者逃避反斜杠:
subprocess.Popen([
'C:\\Program Files (x86)\\Notepad++\\notepad++.exe',
'C:\\Python27\\Django_Templates\\QC\\postits.html'
])
或者,更好的是,使用os.path.join
而不是硬编码的路径分隔符。