Как определить границы черт для связанного типа?

Есть два способа получить время мода, os.path.getmtime () или os.stat (), но ctime не является надежной кросс-платформенной (см. ниже).

os.path.getmtime ()

getmtime ( путь ) Возвращает время последней модификации пути. Возвращаемое значение - это число, указывающее количество секунд с момента (см. Модуль времени). Поднимите os.error, если файл не существует или недоступен. Новое в версии 1.5.2. Изменено в версии 2.3: Если os.stat_float_times () возвращает True, результатом будет число с плавающей запятой.

os.stat ()

stat ( путь ) Выполните системный вызов stat () по данному пути. Возвращаемое значение - это объект, атрибуты которого соответствуют членам структуры stat, а именно: st_mode (бит защиты), st_ino (номер inode), st_dev (устройство), st_nlink (количество жестких ссылок), st_uid (идентификатор пользователя владельца ), st_gid (идентификатор группы владельца), st_size (размер файла, в байтах), st_atime (время последнего доступа), st_mtime (время последней модификации контента), st_ctime (зависит от платформы, время изменения последних метаданных в Unix или время создания в Windows) :

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>> 

В приведенном выше примере вы должны использовать statinfo.st_mtime или statinfo.st_ctime для получения mtime и ctime соответственно.

1
задан Shepmaster 20 January 2019 в 02:50
поделиться

2 ответа

Вы можете использовать синтаксис Item = :

fn parse<I: ToString, T: Iterator<Item = I>>(mut args: T) -> Result<String, String>

, что позволяет еще больше упростить это с помощью синтаксиса impl:

fn parse<T: Iterator<Item = impl ToString>>(mut args: T) -> Result<String, String>

и наконец:

fn parse(mut args: impl Iterator<Item = impl ToString>) -> Result<String, String>

Я бы посчитал эту альтернативу более читабельной.

0
ответ дан Shepmaster 20 January 2019 в 02:50
поделиться

Да, вы можете сделать это с помощью предложения where:

fn parse<T: Iterator>(mut args: T) -> Result<String, String>
where 
    <T as Iterator>::Item: ToString,
{
   // ....
}

Или, поскольку здесь однозначно подразумевается Item, граница может быть просто:

where T::Item: ToString
0
ответ дан Peter Hall 20 January 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: