无法 运行 使用参数进行处理

Unable to run process with arguments

程序逻辑

正在尝试 运行 python 脚本使用 Process.Start() 和 agrument。我正在尝试使用 GUI 自动执行脚本,其中对于每个参数列表,都会生成一个新的 python 命令并 运行.


问题

python 进程没有启动。 CMD window 显示很短的时间并关闭。基本上 python 脚本没有 运行.

注意:python 脚本在 运行 通过 cmd 手动 运行 时正常 运行ning。当没有任何参数时,第二个尝试的代码(下面)运行s,即,当只调用 python 脚本而不带参数时。

因此,当我尝试传递参数并调用脚本时,某处出现错误。

尝试过的解决方案

代码:第一次尝试

For Each common_dir In common_dirs
     ' command for starting python script
     Dim command As String = utils.pyModDir & "Sys_File_Lister.py" & " " & "-d" & " " & "'" & common_dir & "'"
     Try
          'MsgBox(utils.python_Path)
          Process.Start(utils.python_Path, command).WaitForExit()
          Catch ex As Exception
               MsgBox(ex.Message.ToString)
     End Try
Next

代码:第二次尝试

Using proc As New Process()
     ' set the filename for process
     proc.StartInfo.FileName = utils.python_Path
     ' set the arguments for process
     proc.StartInfo.Arguments = """" & command & """"
     MsgBox(proc.StartInfo.Arguments.ToString)
     Try
          ' start the process
          proc.Start()
          ' wait for the process to complete
          proc.WaitForExit()
          ' if error
     Catch ex As Exception
          MsgBox(ex.Message.ToString)
End Using

代码:第三次尝试

这一次,我没有直接使用python调用python脚本,而是在[中调用了cmd.exeStartInfo.FileName 并按照建议调用 StartInfo.Arguments 中的所有其他内容。

这次它导致文件未找到错误消息。

这是在 CMD 的参数中传递的形成的字符串:

从上面的命令中,还尝试从 python 路径中删除引号并将其保留在脚本路径中,但同样的错误。

Using proc As New Process()
    ' set the filename for process
    proc.StartInfo.FileName = "cmd.exe /K "
    ' set the arguments for process
    proc.StartInfo.Arguments = """" & command & """"
    MsgBox(proc.StartInfo.Arguments.ToString)
    Try
        ' start the process
        proc.Start()
        ' wait for the process to complete
        proc.WaitForExit()
        ' if error
    Catch ex As Exception
        MsgBox(ex.Message.ToString)
    End Try
End Using

帮助 : 任何帮助都非常感谢!

由于似乎只有在传递带有参数的 python 脚本时才会出现问题,因此一种快速补救措施是将参数添加到文本文件中并在 python 脚本加载时读取它。

成功了,但是没有解决当前的问题。但是,这是适用于我的案例的辅助解决方案。希望这对某人有帮助。以下是使用的 python 命令。我从 python 脚本中删除了参数解析器,而不是 -d arg 我从文件中读取了这样的参数:

# check the list_from configuration
list_conf_path = "list_from.txt"
list_conf = ""
if isfile(list_conf_path):
    with open(list_conf_path, 'r') as f:
        list_conf = f.readline()
list_conf = list_conf.replace('"', '')
print(list_conf)

# start the main function
if list_conf != "":
    init(list_conf)
else:
    init("C:\")

同样,不是精确解,而是次要解。