【问题标题】:modify value of variable in python program from batch file从批处理文件修改python程序中变量的值
【发布时间】:2013-06-27 14:23:58
【问题描述】:

我有一个要运行的 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 的值。 请帮帮我!

谢谢!

【问题讨论】:

  • 什么不能用python从文本文件中获取值?
  • 我是 python 新手,所以我试图以最好的方式解决这个问题!谢谢。

标签: python variables for-loop batch-file


【解决方案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)

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

干杯!

【讨论】:

  • 我是批处理文件脚本和 python 的新手,所以如果有更好的方法可以做到这一点,我很乐意倾听。
  • @hame 好吧,如果您能告诉我们更多有关您的问题的信息,那将是最好的 :) 最好的方法是使用 python 读取文件。但是为什么有3个文件?你可以看吗?
  • @hame 嘿,请考虑我的新答案,我会尽力帮助您:)
  • 谢谢!!我还没有机会尝试它,但到目前为止对我来说似乎可以理解 :D 我在 Linux 上工作,但我会努力让它工作!
【解决方案2】:

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

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

【讨论】:

  • 啊哈,这就是 sys.argv 的使用方式。感谢您的信息!! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多