2013-06-27 66 views
0

我有一个python文件(example.py)可以运行,它包含3个变量。 我有三个.txt文件(var1.txt,var2.txt,var3.txt),它包含这三个变量中的每一个的值。从批处理文件修改python程序中变量的值

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

任何帮助,将不胜感激!

-added-

谢谢。 事情是,这三个文件没有特别的原因。

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

所以example.py看起来是这样的:

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

program(SOUND, TIMESTEP, END) 

,我想改变声,TIMESTEP,END的值。 请帮帮我!

谢谢!

+2

什么你不能从使用Python的文本文件获取值? – Paco

+0

我是新来的蟒蛇,所以我试图找出这个问题的最佳途径!谢谢。 – hame

回答

1

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

[此外,它为什么无法读取与Python文件?]

//编辑:对于新的信息。

所以,当你已经有一个Python脚本,这是你最好的事情发生,因为你现在有多种方式来处理这个问题。

首先,一个python脚本可以导入另一个python脚本,或者只是其中的一部分。所以你可以做的是import <function> from programimport 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编写您自己的脚本,以便您可以使用命令行参数python myprogram.py p1 p2 p3从bash运行它。 然而,看着这个问题,你似乎正在使用Windows并编写一个简单的Python脚本可能更好/更容易/更方便。但这取决于你在这方面的经验:)

干杯!

+0

我是批处理文件脚本和Python的新手,所以如果有更好的方法来做到这一点,我很乐意倾听。 – hame

+0

@hame如果你想告诉我们更多关于你的问题的信息,那么这将是最好的:)最好的方法是用python读取文件。但为什么有3个文件?你可以阅读吗? – enpenax

+0

谢谢。我在原始帖子上添加了信息。 – hame

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 
+0

啊哈,这就是如何使用sys.argv。感谢您的信息!! :d – hame