Перезапись файла и повторный вызов скрипта - PullRequest
0 голосов
/ 18 мая 2018

В моем текущем проекте я пытаюсь получить список значений (пока я в порядке, получая их в виде списка строк, поскольку это облегчает часть кода), имя файла,и перебирайте значения, чтобы изменить значение в файле, чтобы одновременно отправлять множество вызовов терминалу.Проблема, которая у меня есть сейчас, заключается в том, что, хотя я и изменяю значения, представленные файлы не отличаются от исходного файла, поскольку мне не удается понять, что я неправильно перезаписываю файл.

1-я часть - ввод

if __name__ == '__main__':
if len(sys.argv) < 1:
    print "Specify the input"
    exit(1)
f = sys.argv[1]
list = ast.literal_eval(sys.argv[3])

2-я часть - перезапись

while i < len(list):
  with open(f, 'r+') as file:
    programFile = file.read()

  for l in range(len(node)):
    if i==0:
        valuesDic.update({"initialValue":list[i]})
    else:
        valuesDic.update({list[i-1]:list[i]})

    multiValuesChange(programFile, valuesDic)

    out_file = open(f, "w")
    out_file.write(programFile)
    out_file.close()
    call(["qsub","-l","h=node10",f])
    i=i+1

3-я часть - multiValuesChange

def multiValuesChange(programFile, valuesDic):

    rc = re.compile('|'.join(map(re.escape, valuesDic)))
    def translate(match):
        return valuesDic[match.group(0)]
    return rc.sub(translate, programFile)

Спасибо.

1 Ответ

0 голосов
/ 19 мая 2018

Ваш programFile является строкой.Строки неизменны.Если вы хотите обновить его, вам придется забрать его обратно после обработки с помощью функции multiValuesChange(), так что:

programFile = multiValuesChange(programFile, valuesDic)
...