Python 在记事本中打开文本文件++;使用Subprocess.Popen

Python 在记事本中打开文本文件++;使用Subprocess.Popen,python,subprocess,notepad++,Python,Subprocess,Notepad++,我正在尝试使用subprocess.Popen在记事本++中打开一个文本文件 我尝试了以下代码的许多变体,但都不起作用: subprocess.Popen(['start notepad++.exe', 'C:\Python27\Django_Templates\QC\postits.html']) subprocess.Popen(['C:\Program Files (x86)\Notepad++\notepad++.exe', 'C:\Python27\Django_Template

我正在尝试使用subprocess.Popen在记事本++中打开一个文本文件

我尝试了以下代码的许多变体,但都不起作用:

 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++是否仍处于打开状态,并允许我在它关闭后执行某些操作的解决方案。

我想问题在于路径分隔符是反斜杠,即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
而不是硬编码的路径分隔符。

Hey@david why不起作用:subprocess.Popen([r“C:\Python27\lib\idlelib\idlelib\idle.py”,r“C:\Python27\programs\test2.py”])——我正在尝试做与上面相同的事情(仅使用pythongide)。因为我猜第一个参数不是可执行文件。当然,您需要将
pythonw.exe
作为第一个参数传递。