2013-06-27 2 views
0

У меня есть файл python (example.py) для запуска, который содержит 3 переменные. У меня есть три файла .txt (var1.txt, var2.txt, var3.txt), который содержит значения каждой из этих трех переменных.изменить значение переменной в программе python из командного файла

Я хочу написать пакетный файл (bfile.bat), который извлекает три значения из текстовых файлов, передать эти значения переменных в файле питона, , а затем запустить.

Любая помощь будет оценена!

-added-

спасибо. Дело в том, что нет никаких особых причин для трех файлов.

Так Коллега мой написал эту программу в Python (который я тоже новый), скажу название этой программы является «program.py», и она также файл, чтобы показать, как это работает, , установив значения переменных, используемых в program.py; который является "example.py". этот пример.py содержит значения переменных, которые используются в program.py. Но я хочу использовать множество значений для этих переменных, , поэтому я хотел сделать для этого пакетный файл - что, по-видимому, не очень хорошая идея.

Так example.py выглядит примерно так:

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

program(SOUND, TIMESTEP, END) 

, и я хочу, чтобы изменить значение SOUND, Timestep, END. , пожалуйста, помогите мне!

Спасибо!

+2

Что вы не можете получить значения из текстовых файлов с питоном? – Paco

+0

Я новичок в python, поэтому я пытаюсь выяснить эту проблему наилучшим образом! Спасибо. – hame

ответ

1

Вы должны рассмотреть возможность использования входных параметров в файле python, используя sys.argv. Затем используйте конвейер вывода bash для передачи вашей информации на ваш скрипт python. Однако я не рекомендую модифицировать файл python из bash, написав ему.

[Кроме того, почему не удается прочитать файлы с питоном?]

// РЕДАКТИРОВАТЬ: Что касается новой информации.

Итак, когда у вас уже есть скрипт 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, вероятно, лучше/проще/удобнее.Но это зависит от вашего опыта в этом отношении :)

Cheers!

+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