0

我正在尝试使用 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++ 是否仍然打开并允许我在它关闭后执行某些操作的解决方案。

4

1 回答 1

3

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

于 2013-11-04T16:15:37.800 回答