在Windows中自动运行程序(可能使用python或批处理文件)

2024-10-02 10:29:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用不同的设置和不同的文件名反复运行一些python文件。你知道吗

这是一个我需要做的任务的例子。这是针对Linux的,但是我需要在Windows中做同样的事情。有没有一种方法可以使用python作为调用者并运行其他python脚本,这些脚本已经设置为在STD I/O上工作?Python有这样的壳吗?我宁愿这样做,也不愿切换到在Linux和Windows上维护批处理代码。你知道吗

#!/bin/bash
#run scripts to generate and manipulate data

for ((i=1; i<=3 ; i++))
do
    randfuncgen.py -k 12 > randomvalues_$i.fitdata
    probe.py -k 12 < randomvalues_$i.fitdata > randomvalues_$i.walshdata
    std.py -m s < randomvalue_$i.walshdata > randomvalues_separate_std_$i.walshdata
    std.py -m a < randomvalue_$i.walshdata > randomvalues_all_std_$i.walshdata
done

Tags: 文件方法py脚本文件名linuxwindows事情
2条回答

是的,您可以使用python ^{}模块来做您正试图实现的事情。你知道吗

你的代码看起来像

import subprocess
for i in range(3):
    subprocess.Popen(['-k', 12],                                  # args
                     -1,                                          # buffer_sie
                     'python randfuncgen.py',                     # executable
                     stdout=open("randomvalues_%i.fitdata"%i,'w') # output
                     )
    # Other such processes/executions

你的每一个程序(兰德芬根.py, 探针.py, 标准py)需要支持通过系统标准输出写入('your output'),并通过标准输入. 你知道吗

您可以在这里查看有关子流程模块的文档以及有关“替换shell管道”的相关部分http://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline

例如:

import subprocess as sp
for counter in range(1,4):
    p1 = sp.Popen(['randfuncgen.py','-k','12',], stout=sp.PIPE)
    p2 = sp.Popen(['probe.py', '-k', '12'], stdin=p1.stdout, stdout=PIPE)
    p3 = sp.Popen(['std.py', '-m', 's'], stdin=p2.stdout, stdout='randomvalues_separate_std_%d.walshdata'%counter)
    p4 = sp.Popen(['std.py', '-m', 'a'], stdin=p2.stdout, stdout='randomvalues_all_std_%d.walshdata'%counter)

您可能需要将p2的输出作为一个文件,因为我不确定在p4运行之前管道是否已耗尽

相关问题 更多 >

    热门问题