【问题标题】:Open Text File in Notepad++ using Subprocess.Popen使用 Subprocess.Popen 在 Notepad++ 中打开文本文件
【发布时间】:2013-11-15 07:41:47
【问题描述】:

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

【问题讨论】:

    标签: python subprocess notepad++


    【解决方案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 而不是硬编码的路径分隔符。

    【讨论】:

    • 嘿@david 为什么这不起作用:subprocess.Popen([r"C:\Python27\lib\idlelib\idle.py", r"C:\Python27\programs\test2. py"]) - 我正在尝试做与上面相同的事情(仅使用 Pythong IDE)。
    • 因为第一个参数不是可执行文件,我猜。当然,您需要将pythonw.exe 作为第一个参数传递。
    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 2020-05-24
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    相关资源
    最近更新 更多