无法 运行 使用参数进行处理
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:\")
同样,不是精确解,而是次要解。
程序逻辑
正在尝试 运行 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:\")
同样,不是精确解,而是次要解。