美文网首页大数据 爬虫Python AI Sql
subprocess 反复输入参数 运行可执行文件 并获取输出

subprocess 反复输入参数 运行可执行文件 并获取输出

作者: 南北_dade | 来源:发表于2019-08-04 19:53 被阅读1次

    官方文档中有关于subprocess的使用方法

    在做网易的一个编程题,钱老板的保险箱,有一个可执行文件(包含windows、linux和macOS版本)地址为:http://59.111.13.242/leihuo_2019_guess.zip。每次输入一个0-1的浮点数,会得到一个输出。

    image

    思路:通过多次直行源代码来拟合出这个函数的曲线。

    因此首先需要获得数据集,就是获取多次的输入输出值来进行拟合。小样本拟合效果不佳,因此需要多次进行密码的输入并且获取其输出。

    
    import subprocess
    
    def create_grid(commands):
    
        process = subprocess.Popen(
    
        ['/Users/xds/Downloads/leihuo_2019_guess(1)/guess_macos'],
    
        stdout=subprocess.PIPE,
    
        stdin=subprocess.PIPE,
    
        stderr=subprocess.PIPE)
    
    #    print(type(commands))
    
        out = process.communicate(commands)
    
    #    process.communicate(input= '\n'.join(commands) + '\n')
    
        print(out)
    

    subprocess.PIPE
    可被 Popenstdin, stdout 或者 stderr 参数使用的特殊值, 表示打开标准流的管道. 常用于 Popen.communicate().

    方法1

    可以新建一个文本,然后按行读取要输入的参数

    # 打开文件
    f = open('/Users/xds/Downloads/leihuo_2019_guess(1)/input.txt')
    # 连成字符串
    input = ''.join(f)
    # 转成字节码
    input = input.encode()
    # 将每一行输入
    create_grid(input)
    
    image

    方法2

    也可以新建一个numpy数组,然后处理成字节,输进函数

    # 生成一个numpy数组
    x2 = np.arange(1,25,0.1)/25
    # 拼接成一个list
    a = [''.join(str(i)) for i in x2]
    # 用\n连接成字符串,并转成字节
    b = ('\n'.join(a)).encode()
    create_grid(b)
    
    image
    image

    相关文章

      网友评论

        本文标题:subprocess 反复输入参数 运行可执行文件 并获取输出

        本文链接:https://www.haomeiwen.com/subject/krgydctx.html