You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Basic 2015与Python 2.7之间的变量传递问题

解决VB 2015调用Python 2.7传递参数的问题

我看到你在尝试用VB 2015调用Python 2.7脚本并传递参数,目前的代码里有个关键小问题导致参数无法正确传递——咱们一步步来修正它!

问题所在

你的VB代码里,参数拼接的部分少了一个空格:

.StartInfo.Arguments = ("HelloWorld.py" & arg1)

这样拼接出来的结果是HelloWorld.py1,Python会把这个当成完整的脚本文件名,而不是HelloWorld.py加上参数1,自然无法正确识别你要传递的变量。

修正后的VB代码

只需要在脚本名和参数之间加个空格,同时如果需要捕获Python的输出,记得补充配置UseShellExecute=False和RedirectStandardOutput=True(如果你的代码没写完的话):

Private Sub FWHM_Click(sender As Object, e As EventArgs) Handles FWHM.Click
    Dim pythonProcess As New Process()
    Dim arg1 As Integer = 1 ' 简化变量初始化

    With pythonProcess
        .StartInfo.FileName = "pythonw.exe"
        .StartInfo.WorkingDirectory = "C:\Users\...\" ' 替换成你的实际脚本目录
        .StartInfo.Arguments = "HelloWorld.py " & arg1 ' 这里加了空格分隔脚本和参数
        .StartInfo.RedirectStandardOutput = True ' 如果需要捕获输出的话开启
        .StartInfo.UseShellExecute = False ' 开启重定向必须设置这个为False
        .StartInfo.CreateNoWindow = True ' 可选:不显示Python窗口
        .Start()

        ' 可选:读取Python脚本的输出
        Dim output As String = .StandardOutput.ReadToEnd()
        .WaitForExit()
        ' 可以在这里处理output,比如显示到界面
    End With
End Sub

对应的Python 2.7脚本(HelloWorld.py)

要接收VB传递的参数,需要用sys.argv模块,注意sys.argv[0]是脚本本身的名字,sys.argv[1]才是你传递的arg1,记得把字符串转成整数:

import sys

if __name__ == "__main__":
    # 检查是否有参数传递进来
    if len(sys.argv) > 1:
        arg1 = int(sys.argv[1])
        print("从VB收到的参数:", arg1)
        # 这里写你的业务逻辑
    else:
        print("没有收到参数")

额外提示

  • 如果后续要传递字符串参数,尤其是包含空格的字符串,记得用双引号包裹,比如:.StartInfo.Arguments = "HelloWorld.py """ & "带空格的参数" & """"
  • 确保pythonw.exe的路径正确,如果系统环境变量里没配置Python,可能需要写完整路径,比如C:\Python27\pythonw.exe

内容的提问来源于stack exchange,提问作者alvaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:03:07