Как получить дату / время создания и изменения файла в python?

Как изменить дату создания файла? Топ 5 бесплатных утилит

У Вам бывало, что вам нужно выдать за очень новый какой-то файл, который был изменен и создан, ну, например, на прошлой неделе?Или наоборот «состарить» файлы, будто информация лежит  у вас на компьютере годами.

С изменением даты создания jpg всё ясно — есть exif редакторы, не говоря про встроенный в свойства файла Windows IPTC.

Что же делать, если речь идёт о txt, word файле, или каком либо другом?

В этой статье я поведаю о наиболее простых способах и софте для этих целей.

Файловая система Windows 10 и ее структура не меняется еще с WinNT, если не раньше.Возможность отредактировать любые параметры есть, просто она заблокирована.

Так что мешает нам поставить сторонние программы, и изменить дату создания файла с их помощью?

Встречайте ТОП-5 бесплатных утилитин для изменения даты создания и атрибутов файлов.

FileDate Changer

Интерфейс FileDateChanger

Ему стоит стоять первым в списке, хотя бы из за возраста программы — более 14 лет!

Минимум функций этой утилиты для изменения даты создания файла, и ее возраст, сделали ее самой известной из утилит этого обзора.Выставляем требуемые настройки даты и времени — нажимаем кнопку — получаем результат. Всё просто!

Кстати, программа поддерживает Drag&Drop, а значит вы сможете запросто перетаскивать в нее файлы мышкой.

Плюсы:

  • Drag&Drop.
  • Возможность изменить все параметры дат сразу.
  • Работа в любой версии Windows старше 98, без каких либо проблем.
  • Портабельность

Минусы:

  • Отсутствие инструмента работы с папками.
  • Невозможность работы по маске файла.

Ссылка: http://www.nirsoft.net/utils/filedatech.zip

File Date Touch

Интерфейс File Date Touch

Следующий участник обзора может похвастаться наличием именной маски, а также работой с папками.Утилита также не требует установки.

Плюсы:

  • Работа с папками.
  • Минимализм.
  • Работа по маске файлов.
  • Портабельность.

Минусы:

  • Невозможность одновременно изменить дату создания и изменения файлов.
  • Нестабильность интерфейса в современных ОС.

Ссылка: https://www.dropbox.com/file_date_touch.exe

SetFileDate

Интерфейс SetFileDate

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

Плюсы:

  • Работа с папками.
  • Работа по маске файлов.

Минусы:

  • Необходимость установки.
  • Невозможность одновременно изменить дату создания и изменения файлов.

Ссылка: http://no-nonsense-software.com/setfiledate

2Tware Change File Date

Вкладка утилиты в меню свойств файла.

В отличии от остальных участников обзора, эта утилита интегрируется непосредственно в вкладку в Свойства файла.

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

Плюсы:

Интеграция изменения даты создания прямо в меню свойств файла.

Минусы:

  • Необходимость установки.
  • Невозможность пакетной обработки как таковой.
  • Отсутствие инструмента работы с папками.
  • Возможная нестабильность интеграции вкладки(проявилась при тестировании в Win10).

Ссылка: https://www.dropbox.com/2Tware_Change_File_Date

BulkFileChanger

Изобилие настроек программы

Да, этот участник не только умеет изменять данные создания и изменения файла, но еще и говорит по русски. Утилита выпущена сравнительно недавно и является прямым наследником нашего первого испытуемого. Автор сделал из редактора дат целый комбайн.

Плюсы:

  • Работа с папками.
  • Портабельность.
  • Работа по маске файлов.
  • Наличие полезных мелочей и интерфейсных настроек.
  • Русский язык.
  • Наличие версии для x64.

Минусы: похоже что их нет.

Ссылка: https://www.dropbox.com/BulkFileChange.zip

Так что же лучше?

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

Конечно, самым функциональным, а кроме того и полностью русифицированным решением является BulkFileChanger, но нужен ли вам весь спектр параметров что он предлагает?Если нет, то вполне сойдет и старичок FileDate Changer, или File Date Touch работающий по маске и с целыми папками.

Если же любите чтобы все было под рукой, а изменить дату создания нужно всего у пары файлов, устанавливайте интегрируемый Change FileDate.

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

Создание даты и времени в разных часовых поясах

Все объекты по умолчанию не относятся ни к одному часовому поясу. Чтобы привязать их к определенному часовому поясу — им нужно назначить объект , который привязывает функцию даты и времени к стандарту UTC.

Пересчёт часовых поясов

Для часовых поясов, которые фиксировано смещаются относительно UTC, в Python 3.2+ в модуле есть класс в котором реализован , принимающий параметры и имя (необязательно):

Python 3.x 3.2

Для Python-версий ниже 3.2 необходимо использовать стороннюю библиотеку. Например, . предоставляет эквивалентный класс , который (tzoffset с версии 2.5.3) принимает аргументы вида , где указано в секундах:

Python 3.x 3.2

Python 2.x 2.7

Часовые пояса с переходом на летнее время

Для часовых зон с летним временем в стандартных библиотеках python нет стандартных классов. Поэтому нужно использовать стороннюю библиотеку. Есть и — популярные библиотеки,  в которых представлены классы часовых поясов.

Помимо стандартных часовых поясов, в есть классы часовых поясов, в которых используется летнее время (см. Документацию для модуля tz ). Можете использовать метод для получения объекта часового пояса, который затем можно передать непосредственно в :

ВНИМАНИЕ. Начиная с версии 2.5.3, обрабатывает неоднозначные даты и всегда будет назначен по умолчанию для более поздней даты

Невозможно создать объект с текущим часовым поясом, например, , так как это происходит во время перехода на летнее время.

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

Если вы рассчитываете дату и время в часовом поясе — вы должны либо выполнить вычисления для UTC (чтобы получить абсолютное истекшее время), либо используйте :

Разница между двумя датами и временем

from datetime import datetime, date

t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
t3 = t1 - t2
print("t3 =", t3)

t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13)
t6 = t4 - t5
print("t6 =", t6)

print("type of t3 =", type(t3)) 
print("type of t6 =", type(t6))  

Когда вы запустите программу, вывод будет:

t3 = 201 days, 0:00:00
t6 = -333 days, 1:14:20
type of t3 = <class 'datetime.timedelta'>
type of t6 = <class 'datetime.timedelta'>

Обратите внимание, что и t3, и t6 относятся к типу

Работа с часовыми поясами

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

Библиотека datetime не хранит часовые пояса, данные о переводах часов (летнее и зимнее время) и високосных секундах. К тому же, некоторые страны, могут изменить время опираясь на локальные ситуации. Эти ситуации опасны, когда идет запись в базу данных. Для вывода в GUI, можно использовать datetime.datetime.now() или высчитывать часовой пояс из базы.

Для записи в базу данных мы можем использовать время UTC и отдельно считать часовой пояс:

Следующий пример вычислит разницу времени между UTC и локальным. Насколько я знаю он может не сработать на версиях Python < 3.3:

Для вычисления других часовых поясов можно использовать стороннюю библиотеку pytz, которая их хранит:

 Вывести все часовые пояса мы можем так:

На примере ниже я перевожу локальное время в часовой пояс Киева:

Рекомендую

Форматирование и перевод в строку

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

  • year
  • month
  • day
  • weekday
  • hour
  • minute
  • second

Так же есть метод strftime, который форматирует даты в нужном формате в строку. Например так мы получим дату в формате, который используется у нас:

Где:

  • %d — день месяца с 1 по 31;
  • %m — месяц с 1 по 12;
  • %Y — год;
  • %H — час в формате 0-24;
  • %M — минуты;
  • %S — секунды.

Таким же способом можно получить время и дату:

  • %c — время и дата;
  • %x — дата;
  • %X — время.

Обратите внимание, что таким способом мы преобразуем объект класса datetime в строку и мы больше не сможем использовать методы по работе с датой (например сравнение):

Мы получим ошибку так как уже работаем со строкой:

AttributeError: ‘str’ object has no attribute ‘day’

Выше описаны основные возможности форматирования используя метод strftime(), но их, конечно, больше.

Получения дня недели и название месяца

Можно получить название дня недели или название. Численный вариант эквивалентен следующим значениям:

  • 0 — Monday (Понедельник);
  • 1 — Tuesday (Вторник);
  • 2 — Wednesday (Среда);
  • 3 — Thursday (Четверг);
  • 4 — Friday (Пятница);
  • 5 — Saturday (Суббота);
  • 6 — Sunday (Воскресенье).

Следующий пример вернет день недели в виде числа:

Или получить название:


Где:

  • %A — полное название дня недели;
  • %a — сокращенное название дня недели;
  • %s — представление в виде числа.

Такой же принцип по работе с месяцами, где:

  • %B —  полное название месяца;
  • %b — сокращенное название месяца;
  • %m — месяц в виде числа.

Преобразование временных меток

Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках Unix.

Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.

Для ее получения в «Питоне» пригодится модуль time, следовательно, первая строка будет :

Функция  возвращает пользователю число с плавающей запятой и с временной меткой Unix. 

На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.

Как конвертировать онлайн обычную дату в формат Timestamp?

Еще одна возможность сервиса – перевод даты в Timestamp, операция обратная для предыдущей, позволяет конвертировать любое число в секунды. Чтобы воспользоваться функцией, необходимо:

  1. Задать дату в поле для ввода – можно ввести вручную или использовать календарь.
  2. Указать часы, минуты, секунды по GMT – будьте внимательны, может отличаться от времени в вашем часовом поясе.
  3. Нажмите «Дату в Timestamp».
  4. Сервис автоматически переведет дату и время в секунды – ознакомьтесь с результатом.

Чтобы конвертер времени UNIX работал корректно, можно задать любую дату, но не ранее 1 января 1970 года, иначе результат будет отрицательным.

Как перевести секунды в дни, часы, минуты онлайн?

Наш сервис также легко конвертирует секунды UNIX в дни, часы и минуты без указания точной даты – только времени, которое прошло с запуска часов. Для расчетов следует:

  1. Задать нужное число – секунды времени.
  2. Нажать «Конвертировать в дни, часы и минуты».
  3. Программа выполнит перевод с точностью до секунды.

Мы создали конвертер времени эпохи Unix Epoch, чтобы посетителям было проще работать с этим форматом. Если вам приходится хотя бы иногда переводить секунды в обычное время, добавьте страницу в закладки, чтобы не потерять. Ресурс полностью бесплатный и удобный, а еще здесь есть десятки других классных сервисов, включая метроном, будильник, таймер – и все они работают онлайн без установки на компьютер.

Реализация

Основные строительные блоки основаны на следующих классах.

  • Наблюдатель ().
  • Обработчик событий ().

Следовательно, реализация довольно проста и состоит в следующем.

  1. Создайте экземпляр класса потоков .
  2. Определите подкласс обработчика событий с вашей собственной реализацией и создайте из него экземпляр.
  3. Вызовите функцию расписания через экземпляр наблюдателя, прикрепляя обработчик событий. Функция принимает несколько других входных параметров, таких как путь к отслеживаемому каталогу.
  4. Запустите поток наблюдателя и дождитесь, пока он сгенерирует события, которые вызовут исполнение кода внутри обработчика событий.

Обработчик событий

В настоящее время в модуле доступно 4 типа обработчиков событий.

  1.  —  базовый обработчик событий файловой системы, из которого можно переопределить методы.
  2. сопоставляет заданные шаблоны с путями к файлам, которые связаны с происходящими событиями.
  3. сопоставляет заданные регулярные выражения с путями к файлам, которые связаны с происходящими событиями.
  4. регистрирует все записанные события.

Остальные классы наследуются от , который предоставляет для переопределения следующие функции.

  •  —  обработчик событий Catch-all.
  • вызывается при создании файла или каталога.
  • вызывается при удалении файла или каталога.
  • вызывается при изменении файла или каталога.
  • вызывается при перемещении или переименовании файла или каталога.

Подкласс FileSystemEventHandler

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

Замените операторы вывода логикой вашей реализации. Для каждой из функций будет представлен входной параметр , который содержит следующие переменные.

  •  —  тип события в виде строки. По умолчанию значение .
  •  —  , если событие было выдано для каталога. В противном случае  —  .
  •  —  исходный путь объекта файловой системы, вызвавшего это событие.

Наиболее полезный параметр здесь  —  . Им можно воспользоваться, чтобы определить, какой файл был изменен, прежде чем запускать соответствующую логику.

Наблюдатель и обработчик событий

После добавления подкласса можно безопасно создать его экземпляр вместе с классом . Назначьте выбранный путь для процесса отслеживания. В данном случае проверим недавно созданную папку под названием .

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

Вызов запустит поток, и при внесении изменений в соответствующий путь будет сгенерировано событие.

Тест

Чтобы протестировать написанный код, надо реализовать цикл выполнения и предотвратить выход из него. На выходе при возникновении исключения вызовите функцию для очистки ресурсов.

Сохраните файл Python и запустите его из терминала. Измените имя в соответствии с тем, которое задали раньше.

Протестировать все это легко: создайте новый документ, измените его содержимое и удалите из каталога. Вот пример вывода:

Обратите внимание: поведение и результат могут отличаться в зависимости от редактора. Например, у Vim есть известная проблема с событиями типа

“Vim не изменяет файлы без соответствующего указания. Он создает резервные копии файлов, а затем меняет их местами, чтобы заменить файлы, которые вы редактируете на диске. Это означает, что если вы пользуетесь Vim для редактирования файлов, события при изменении этих файлов не будут запускаться . Возможно, вам потребуется соответствующим образом настроить Vim, чтобы отключить эту функцию”.

Спарсить произвольный timestamp в ISO 8601 с минимумом подключаемых библиотек

У Python ограниченная поддержка анализа временных меток ISO 8601. Для того, чтобы использовать — вам нужно точно знать его формат. Сложность в том, что в с временной меткой ISO 8601 есть 6-разрядная дробь:

Если дробная часть равна 0, то она не выводится:

Но для этих двух вариантов используется другой формат для . Кроме того, не поддерживает ни минуты, ни обозначения часовых поясов с минутами. Например, 2016-07-22 09: 25: 59 + 0300 проанализируется, а стандартный формат вида нет.

Существует библиотека из одного файла — , которая правильно анализирует только временные метки ISO 8601.

Он поддерживает дроби, часовые пояса и T разделитель внутри единственной функции:

Если часовой пояс не установлен, значение соответствует UTC. Зона по умолчанию может быть изменена с помощью ключевого слова . Если вместо значения по умолчанию передаётся , то тогда те значения даты и времени, у которых нет определенного часового значения, устанавливаются вместо простых значений даты и времени:

Закрытие файла

Метод close()

После его нужно закрыть. Таким образом освобождаются ресурсы и убирается мусор. Python автоматически закрывает файл, когда объект присваивается другому файлу.

Существуют следующие способы:

Способ №1

Проще всего после открытия файла закрыть его, используя метод .

После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.

Способ №2

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

Без него программа завершается некорректно.

Вот как сделать это исключение:

Этот метод гарантирует, что если операции над файлом вызовут исключения, то он закроется до того как программа остановится.

Способ №3

Инструкция with

Еще один подход — использовать инструкцию , которая упрощает обработку исключений с помощью инкапсуляции начальных операций, а также задач по закрытию и очистке.

В таком случае инструкция не нужна, потому что автоматически закроет файл.

Вот как это реализовать в коде.

Файлы Python

Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename).

В Python существует два типа файлов:

  1. Текстовые
  2. Бинарные

Текстовые файлы

Это файлы с человекочитаемым содержимым. В них хранятся последовательности символов, которые понимает человек. Блокнот и другие стандартные редакторы умеют читать и редактировать этот тип файлов.

Текст может храниться в двух форматах: () — простой текст и () — «формат обогащенного текста».

Бинарные файлы

В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.

Они хранятся в формате .

Любую операцию с файлом можно разбить на три крупных этапа:

  1. Открытие файла
  2. Выполнение операции (запись, чтение)
  3. Закрытие файла

Часовые пояса

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

Абсолютные даты не содержат информацию, которая бы могла определить часовой пояс или летнее время. Однако с такими намного проще работать.

Относительные же содержат достаточно информации для определения часового пояса или отслеживания изменений из-за летнего времени.

Разница между DST, GMT и UTC

  1. GMTОфициальный часовой пояс, используемый в некоторых странах Европы и Африки. Он может быть представлен как в 24, так и в 12-часовом форматах. GMT используется для того, чтобы задавать местное время. Например, местное время для Берлина 2020–10–17 09:40:33.614581+02:00 GMT. Для Найроби же это — 2020–10–17 10:40:33.592608+03:00 GMT.
  2. DST (летнее время)Страны, которые переходят на летнее время, делают это для того, чтобы дневное время длилось как можно дольше. Во время летнего времени они переводят стрелки своих часов на час вперед и возвращаются обратно осенью.
  3. UTC (всемирное координированное время)Временной стандарт для часовых поясов во всем мире. Он позволяет синхронизировать время во всем мире и служит отправной точкой для остальных.

Как работать с часовыми поясами

Рассмотрим, как создать простой относительный объект :

Копировать

Эта программа возвращает объект с абсолютным значением . Если же нужно сделать его абсолютным, то нужно явно указать часовой пояс. Как это сделать? В библиотеке в Python нет модуля для работы с часовыми поясами. Для этого нужно использовать другие библиотеки. Одна из таких — pytz.

Предположим, нужно получить текущее время для Найроби. Для этого нужно использовать конкретный часовой пояс. Для начала можно с помощью pytz получить все существующие часовые пояса.

Копировать

Вот некоторые из них:

Для получения времени в Найроби:

Копировать

Результат:

А вот так можно получить время Берлина:

Копировать

Результат:

Здесь можно увидеть разницу в часовых поясах разных городов, хотя сама дата одна и та же.

Конвертация часовых поясов

При конвертации часовых поясов в первую очередь нужно помнить о том, что все атрибуты представлены в UTC. Допустим, нужно конвертировать это значение в :

Копировать

Результат:

Другие практические примеры

Всегда храните даты в UTC. Вот примеры:

Копировать

Результат для этого кода — , хотя локальное время может быть, например, таким . А уже при демонстрации даты пользователю стоит использовать метод с местными настройками:

Копировать

Вернет текущее локальное время — .

Работа с датой current

Существуют 2 способа получения текущей даты. Первый выводит нужные данные из объекта datetime посредством метода :

Во втором применяется метод  класса date:

Класс datetime.date позволяет получать календарную дату. Также следует добавить, что его атрибуты (year, month, day) бывают доступны и отдельно, как в примере с datetime.

Тут все понятно и просто. Но есть нюанс: если надо получить день недели, прописывают . Дело в том, что нумерация дней недели начинается с нуля, то есть понедельник — это 0, вторник — 1, среда — 2 и так далее. Если такое положение вещей устраивает, +1 можно и не добавлять.

А как поступить, если надо отобразить текущее время отдельно от даты?

Как конвертировать объект datetime в строку

Модуль datetime в Python содержит метод , который делает обратное (то есть, конвертирует объект и в строки). Вот его синтаксис:

Примеры конвертации datetime в строку с помощью strftime()

Предположим, нужно конвертировать текущий объект в строку. Сначала нужно получить представление объекта и вызвать на нем метод .

Копировать

Результат — .

Как получить строковое представление даты и времени с помощью функции format()

Пример №1. Конвертация текущей временной метки в объекте в строку в формате «DD-MMM-YYYY (HH:MM:SS:MICROS)»:

Копировать

Результат:

Пример №2. Конвертация текущей временной метки объекта в строку в формате «HH:MM:SS.MICROS – MMM DD YYYY».

Копировать

Результат:

3 ответа

Лучший ответ

Поскольку вы открыли награду, я не могу голосовать за закрытие как дубликат, но этот вопрос может показаться возможным решение. Цитирование из принятого ответа:

в основном оборачивает команду и создает пакет Debian на основе того, что было установлено. Затем вы можете просто удалить этот пакет, чтобы полностью изменить . Чтобы быть в полной безопасности, вы можете сначала удалить упакованный Python 3.7, а затем переустановить его, чтобы избежать каких-либо конфликтов (хотя я не ожидаю никакого, поскольку упакованная версия находится в / usr, а исходная версия — в / usr / local ) .

Если у вас больше нет исходных файлов, вы всегда можете загрузить их снова (https : //www.python.org/downloads/release/python-370b3/) и перестройте Python. В частности, команды будут выглядеть примерно так:

( создает пакет Debian, запрещает использование временного каталога для установки).

10

nneonneo
25 Июл 2018 в 01:48

Так как я также переходил на python 3.7, я наткнулся на этот вопрос и решил ответить на него, а также закончить установку. Это два источника, которые я использовал для установки Python 3.7 на Ubuntu 16.04: https://askubuntu.com/questions/865554/ как — делать — я — установки — питон — 3-6 с помощью -APT -GET https://superuser.com/questions/241865/updating-python-on-ubuntu-system а>

Как видно из первого источника, PPA для deadsnakes содержит Python 3.7 — Ссылка: https: //github.com/deadsnakes/python3.7/tree/ubuntu/xenial/Python

Исходя из моего первого источника, я использовал следующие команды для установки Python 3.7:

Он успешно установил Python 3.7, но мой Python 3.5.2 остается по умолчанию. Вы можете вызвать / использовать Python 3.7, выполнив команды:

Это работает, поэтому я решил установить Python 3.7 по умолчанию, удалив python 3.5, но наткнулся на свой второй источник и просто решил использовать при запуске моего скрипта в терминале.

Видимо, в нем говорится: Ubuntu широко использует политику для написания программного обеспечения для конечных пользователей. Таким образом, большая часть системы написана на Python. Чтобы перейти на Python 3.7, необходимо выполнить часть работы, состоящую из обновления и повторного тестирования всех сценариев.

Так сказать, вы не можете просто переключиться на Python 3.7 и удалить старую версию.

Также из комментария из моего первого источника говорится, что удаление старой версии может сломать систему. Я не собирался удалять мою старую версию на случай, если она может сломать систему, но, поскольку вы спрашиваете, как загрузить Python 3.7, я думаю, что мой первый источник и первая часть моего ответа должны быть полезны.

Я надеюсь, что это помогает :)

3

Mahir Islam
21 Июл 2018 в 01:04

Похоже, что ваш Python, созданный из исходного кода, находится под , а ваша переменная имеет до , так как при запуске вы получаете тот, который находится под { {X5}}, а не упакованный, который будет .

Посмотрите на свой , чтобы убедиться в этом.

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

Я предполагаю, что ваша цель — (или любая другая команда, предоставленная Python) для запуска версий из вашей пакетной установки в .

К сожалению, процесс сборки Python не предоставляет метод удаления — единственный автоматический способ удаления только файлов, установленных исходной установкой Python, требует заблаговременного использования других инструментов (таких как ).

Итак, у вас есть несколько вариантов:

  • Измените так, чтобы был после . Чтобы сделать это, отредактируйте ваш файл или любой другой скрипт, который у вас есть для настройки и выхода из системы / входа в систему. Это также повлияет на любые другие выполняемые вами команды, доступные как в , так и в .

  • Удалите и переустановите все, что вы хотите там. Если установка Python — единственная вещь в вашем , или если вы можете легко переустановить все, что у вас там было, это может быть подходящим вариантом.

  • Тщательно выясните, какие файлы в были частью Python, и удалите их. Возможно, вы сможете использовать соответствующие файлы в из установленных вами пакетов в качестве отправной точки для определения похожих имен для .

Одна строка для получения списка файлов в из установленных пакетов :

Это должно создать список файлов, таких как:

(Я тестировал эту однострочную версию на Debian, я не уверен, требуются ли какие-либо изменения для Ubuntu)

2

rakslice
25 Янв 2019 в 00:05

Запись вывода Python в файлы

В Python есть требования для записи вывода скрипта Python в файл.

Метод check_call() подпроцесса модуля используется для выполнения сценария Python и записи вывода этого сценария в файл.

Следующий пример содержит два сценария Python. Сценарий file1.py выполняет сценарий file.py и записывает свои выходные данные в текстовый файл output.txt.

Пример:

file.py

temperatures=  
def c_to_f(c):  
    if c< -273.15:  
        return "That temperature doesn't make sense!"  
    else:  
        f=c*9/5+32  
        return f  
for t in temperatures:  
    print(c_to_f(t))  

file.py

import subprocess  
  
with open("output.txt", "wb") as f:  
    subprocess.check_call(, stdout=f)  
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: