Скрипт на Python, который изменяется при выполнении

#python #list

#python #Список

Вопрос:

как я могу написать скрипт, который он изменяет при выполнении? Например, существует два скрипта a have из двух строк:

 list = [1, 2, 3, 4, 5]
sliced_list = list[0:1]
  

При его выполнении 2-я строка должна быть:

 sliced_list = list[1:2]
  

и затем,

 sliced_list = list[2:3]
  

Я хочу изменять переменную «sliced_list» каждый раз, когда я запускаю этот файл.

Комментарии:

1. List = [0:1] (etc) даже не является допустимым синтаксисом.

2. Я обновил его. итак, как я могу это сделать. что мне нужно исследовать?

3. List[0:1] теперь синтаксически допустим, но это бессмысленно — он оценит фрагмент, а затем немедленно отбросит его.

4. Я предлагаю вам попробовать это automatetheboringstuff.com/2e/chapter4 для изучения списков, если вы начнете с самого начала, это приведет к запуску скриптов

5. @alaniwi хорошо, просто подумайте о печати. Я просто хочу, чтобы вы поняли, что я имею в виду

Ответ №1:

Как правило, это не то, что вам когда-либо захочется делать, поскольку это, вероятно, приведет к недетерминированному поведению, и в случае ошибки возможно полностью перезаписать ваш скрипт и потерять данные.

Если вы хотите изменить дату, с которой работает ваш скрипт, вы должны каким-то образом постоянно сохранять ее. Это может быть где-то в отдельном файле или в переменной среды.

Но чтобы выполнить то, что вы просите, вам нужно будет открыть скрипт, скопировать содержимое и изменить содержимое по своему усмотрению следующим образом:

 with open("/path/to/script.py", 'r ') as script:
    contents = script.read()

    # ... some string logic here

    # Point cursor to the beginning of the file
    # If the original contents were longing than the new contents
    # you'll have unwanted data at the end of the file.
    script.seek(0)
    script.write(contents)
  

Комментарии:

1. contents здесь будет пустым — в a режиме указатель на файл будет помещен в конец.

2. @alaniwi Ты абсолютно прав насчет этого. Вам нужно будет открыть файл для чтения содержимого перед закрытием, чтобы записать обновленное содержимое.

3. @joshmeranda Необязательно закрывать — можно открыть в r режиме, прочитать содержимое, затем script.seek(0) и записать обновленное содержимое. Но все это в любом случае плохая идея, как вы говорите.

4. @alaniwi Да, я просто тестировал это, прежде чем обновлять ответ.

Ответ №2:

Вы могли бы сохранить начальный индекс в файл при запуске скрипта. Затем увеличьте его и сохраните. Что-то вроде того, что показано ниже.

 import os
List=[1,2,3,4,5]
file=open('file.txt','r ')
start_index=int(file.read())
print(List[start_index:start_index 1])
file.close()
os.remove('file.txt')
file=open('file.txt','w')
file.write(str(start_index 1))
file.close()