gpt4 book ai didi

python - 使用子进程运行带有标志的可执行文件

转载 作者:行者123 更新时间:2023-11-30 23:34:54 25 4
gpt4 key购买 nike

我知道这个问题已经被问过很多次了,我想我已经阅读了每个问题,但我无法找到我的问题的答案。我正在尝试在 Windows XP 计算机上运行可执行文件。可执行文件位于一系列文件夹中。

C:\folder\program.exe

当我运行程序时,我需要包含一个标志和一个路径。

program -f\path\to\file.txt

如果我浏览到该文件夹​​并使用 cli 运行上面的命令,它就可以正常工作。我正在尝试从我的 python 脚本中运行这个程序。

我已经尝试了 Subprocess.popensubprocess.call,我似乎没有收到任何错误,但程序也没有执行。

有人对我还可以尝试什么有什么建议吗?谢谢

def Run(Path='\data\file.txt'):
import subprocess, time

cmd = '-f'+Path
subprocess.Popen(["program", cmd, "C:\folder\\"])


def Run(Path='\data\file.txt'):
import subprocess, time

cmd = '-f'+Path
subprocess.call(["C:\folder\program.exe", cmd])

最佳答案

您在字符串中使用了反斜杠。如果您不转义它们,它会尝试将反斜杠解释为转义字符。例如,您的未转义字符串:

>>> '\data\file.txt'
'\\data\x0cile.txt'

请注意,\f 被转换为不同的字符。那是因为如果你看 table of escape characters您将看到 \f 映射到 ASCII 换页 (FF) 字符。你会想要逃避它们:

>>> '\\data\\file.txt'
'\\data\\file.txt'

或使用文字字符串:

>>> r'\data\file.txt'
'\\data\\file.txt'

例如,这里尝试重写您的 Run 函数:

import subprocess
import time

def Run(path='\\data\\file.txt'):
flag = '-f%s' % path
subprocess.call(['C:\\folder\\program', flag])

调用程序时应始终使用绝对路径。如果您只有相对于脚本的路径,则可以使用如下所示构造一个新的绝对路径:

import os.path
script_dir = os.path.abspath(os.path.dirname(__file__))
cmd = os.path.join(script_dir, '\\relative\\path\\to\\program.exe')

关于python - 使用子进程运行带有标志的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com