Как я могу сравнить время создания файла с текущим временем в Perl?

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

'shapely.geometry' in sys.modules

Изучите этот список «модуль импорта» против «из функции импорта модуля» [112 ].

5
задан 5 revs, 3 users 60% 29 December 2008 в 19:01
поделиться

3 ответа

Это еще легче, чем использование статистики () и время ()/localtime ().

my $diff = -M $filename;

-M оператор возвращает "возраст" файла (в течение многих дней начиная с запуска программы). Это документируется под функциями-X или в perldoc -f -X.

15
ответ дан 18 December 2019 в 05:40
поделиться

Если Вы хотите сравнить значения, Вы могли бы хотеть использовать число, от которого Вы добрались localtime в скалярном контексте и время изменения inode, когда можно добраться от stat:

               ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
                  $atime,$mtime,$ctime,$blksize,$blocks)
                      = stat($filename);

где:

                 0 dev      device number of filesystem
                 1 ino      inode number
                 2 mode     file mode  (type and permissions)
                 3 nlink    number of (hard) links to the file
                 4 uid      numeric user ID of file's owner
                 5 gid      numeric group ID of file's owner
                 6 rdev     the device identifier (special files only)
                 7 size     total size of file, in bytes
                 8 atime    last access time in seconds since the epoch
                 9 mtime    last modify time in seconds since the epoch
                10 ctime    inode change time in seconds since the epoch (*)
                11 blksize  preferred block size for file system I/O
                12 blocks   actual number of blocks allocated

Таким образом, Вы хотите поле 9:


$mtime = ( stat $filename )[9];
$current_time = time;

$diff = $current_time - $mtime;

13
ответ дан 18 December 2019 в 05:40
поделиться

localtime возвращает список значений в контексте списка. См. localtime документацию или perlcheat. В Вашем примере это похоже на те все mushed вместе. В скалярном контексте это возвращает отформатированную строку как Mon Dec 29 03:16:33 2008. На большинстве платформ файл inode время изменения будет возвращен из stat как много секунд с некоторой эпохи. Необходимо смочь непосредственно сравнить это с результатом time() (нет localtime()).

3
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

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