0

我有一个要运行的 python 文件(example.py),其中包含 3 个变量。我有三个 .txt 文件(var1.txt、var2.txt、var3.txt),其中包含这 3 个变量中的每一个的值。

我想编写一个批处理文件(bfile.bat),从文本文件中检索三个值,将这些值传递给 python 文件中的变量,然后运行。

任何帮助,将不胜感激!

-添加-

谢谢你。问题是,这三个文件没有特别的原因。

所以我的一个同事用python写了这个程序(我也是新人),我会说这个程序的名字是“program.py”,她还做了一个文件来展示它是如何工作的,通过设置变量的值在program.py中使用;这是“example.py”。这个 example.py 包含在 program.py 中使用的变量的值。但是我想为这些变量使用很多值,所以我想为此制作一个批处理文件——这显然不是一个好主意。

所以 example.py 看起来像这样:

SOUND = 'sound.wav'
TIMESTEP = 50
END = 500

program(SOUND, TIMESTEP, END)

我想更改 SOUND、TIMESTEP、END 的值。请帮我!

谢谢!

4

2 回答 2

1

你应该考虑在你的 python 文件中使用输入参数,使用sys.argv. 然后使用 bash 输出管道将您的信息通过管道传输到您的 python 脚本。但是,我不建议通过写入来修改 bash 中的 python 文件。

[另外,为什么不能用python读取文件?]

//编辑:关于新信息。

所以当你已经有了一个 python 脚本时,这对你来说是最好的事情,因为你现在有多种方法来处理这个问题。

首先,一个 python 脚本可以导入另一个 python 脚本,或者只是它的一部分。所以你可以做的是import <function> from program或者import program然后使用它。现在您可以使用她的函数编写自己的 python 脚本了!您可以简单地创建参数和值的列表。例如元组列表:

import program

# of course you can also generate this list, depeding on which couples of parameters
# you want to run :)
# this was hardcoding it for simplicity!
myparams = [('sound1.wav', 30, 50), ('sound2.wav', 20, 100), ...]

for (p1, p2, p3) in myparams:
    program.function(p1, p2, p3)

这将使用function()您的program.py. 您还可以导入该程序并使用它编写您自己的脚本,sys.argv这样您就可以使用命令行参数从 bash 运行它python myprogram.py p1 p2 p3。但是,看看这个问题,您似乎正在使用 Windows 并且编写一个简单的 python 脚本可能更好/更容易/更方便。但这取决于您在这件事上的经验:)

干杯!

于 2013-06-27T14:26:44.830 回答
0

听起来传递参数将是实现您想要的更简单的方法。因此,不要使用文件来保存变量,而是尝试:

import sys

numArgs = len(sys.argv)
# You want 3 variables, and the 0th index will be '[file].py'.
if (numArgs >= 4):
    SOUND = sys.argv[1]
    TIMESTEP = sys.argv[2]
    END = sys.argv[3]
else:
    print 'Not enough arguments.'

然后你可以简单地运行:

python [file].py arg1 arg2 arg3
于 2013-06-27T19:49:11.597 回答