#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()