Я работаю над скриптом Python, который входит в данный каталог и удаляет файлы на основе даты изменения. Я получил большую часть работы (удивительно!), За исключением того, что я нашел ошибку. Позвольте мне дать вам некоторое представление о том, как работает моя программа.Сценарий работает только один раз, хотя я использую «while (True)»
Таким образом, если пользователь просит, чтобы программа работала тихо, у меня есть все данные stdout и stderr, перенаправленные в временный текстовый файл в папке temp. Работает отлично. Существует также возможность запускать сценарий непрерывно. Для этого я использовал простой цикл (True). Работа непрерывно работала отлично и денди, пока я не захотел удалить эту временную папку после каждого цикла. Вот код в моей главной функции:
while(True):
display()
verifyDirectory()
checkArgs()
# Deleting the temporary folder after each loop:
if args.q:
deleteTempFolder()
Опять же, все работало хорошо, пока я пытался удалить временную папку после каждого цикла. Программа в основном останавливается после завершения первого цикла. Вот код под deleteTempFolder():
# Closing the redirected text files.
sys.stdout.close()
sys.stderr.close()
# Defining the paths for the temp folder and the existing text files.
folder = args.directory + "\\" + "temp"
stdoutPath = folder + "\\" + "stdout.txt"
stderrPath = folder + "\\" + "stderr.txt"
# Deleting the text files first, then deleting the entire temporary folder.
os.remove(stdoutPath)
os.remove(stderrPath)
os.rmdir(folder)
Я хотел бы также отметить, что все перечисленные выше код работает отлично самостоятельно, но когда я объединил два (протекал непрерывно и удалить временную папку), это когда я заметил, что я выхожу из своей петли.
Также не генерируются ошибки или исключения. Я смог проверить файл stderr, перенаправив его в другое место, поэтому он не будет удален, когда я запустил код.
Надеюсь, все это имеет смысл. Это первый случай, когда я задал вопрос здесь, и это первый скрипт, который я когда-либо писал, который не был глупой видеоигрой на Java для курса. Я надеюсь опубликовать весь скрипт позже за советом по эффективности!
Вы воссоздаете папку в начале каждого цикла? В противном случае это, вероятно, не работает, потому что вы пытаетесь удалить что-то, чего не существует. – Dannnno
Мое основное подозрение в том, что генерируется исключение _is_, но по какой-то причине оно не появляется в вашем перенаправленном stderr. Не могли бы вы удалить что-либо, что изменяет 'sys.stdout' или' sys.stderr', и посмотреть, что вывод находится на консоли? – Kevin
Ничего себе! Вы, ребята, быстры! @Dannnno: папка становится воссозданной при вызове функции checkArgs(). Когда я не вызываю deleteTempFolder(), программа работает непрерывно и просто добавляется к одному и тому же файлу снова и снова. Если я разрешаю программе работать в течение нескольких минут, файл stdout.txt становится довольно большим. Итак, я думал, что было бы более эффективно удалять после каждого цикла. Мне интересно, должен ли я опубликовать весь скрипт здесь, но я думал, что это может быть не-нет. – LadyDee852