从 Python 脚本运行 .XLSX 文件,无需等待完成,Windows 10

问题描述 投票:0回答:1

伙计们。 我需要:

  1. 从我的 Python 脚本启动一个 .XLSX 文件而不等待它完成,
  2. 有时我需要退出父脚本,但子进程应该继续工作。 我可以这样做吗?如果是,最好和最简单的方法是什么?

我试过代码 os.spawnv(os.P_NOWAITO, "C:\Program Files\Microsoft Office oot\Office16\EXCEL.EXE", ["File.xlsx", "File.xlsx"]), 但不好的是:

  1. 我需要指定Excel.exe的完整路径,不方便,不同电脑不兼容。我想指定 EXCEL.EXE 和全部,或仅指定 File.xlsx(.xlsx 文件与操作系统中的 EXCEL.EXE 关联),
  2. 出于某些原因,我需要将 .xlsx 文件名指定两次作为列表,为什么?
  3. 当父 Python 脚本退出而 Excel 仍在运行时,Excel 似乎挂起。
python windows call
1个回答
0
投票

您可以使用 Python 中的

subprocess
模块实现您的要求。这是一个代码片段,可以满足您的需要:

import subprocess
import os
import sys

def launch_excel(file_path):
    # Find the path to Excel.exe
    excel_path = find_excel_path()
    if not excel_path:
        print("Excel not found.")
        sys.exit(1)

    # Launch Excel without waiting for it to complete
    command = f'"{excel_path}" "{file_path}"'
    if os.name == 'posix':  # Unix-based systems
        detached_process = os.setsid
    else:  # Windows
        detached_process = None

    subprocess.Popen(command, shell=True, preexec_fn=detached_process)

def find_excel_path():
    for p in os.environ["PATH"].split(os.pathsep):
        p = os.path.join(p, "EXCEL.EXE")
        if os.path.exists(p) and os.path.isfile(p):
            return p
    return None

if __name__ == "__main__":
    launch_excel("File.xlsx")

这个脚本将:

  1. 在系统的PATH中搜索
    EXCEL.EXE
  2. 使用给定的 .xlsx 文件启动 Excel。
  3. 从父 Python 脚本中分离 Excel,因此当脚本退出时它不会挂起。

您不需要指定两次.xlsx 文件名;你只需要将它传递给

launch_excel
函数一次。该脚本应该与不同的计算机兼容,因为它在系统路径中搜索 Excel。

© www.soinside.com 2019 - 2024. All rights reserved.