LINUX.ORG.RU

shutil.copy2(src, dst) and mtime milliseconds + sshfs

 ,


0

1

Столкнулся с ситуацией, когда при копировании shutil.copy2() время в метаданных обновляется с точностью лишь до секунды.

Как сделать, чтобы копировалось точное время?

#!/usr/bin/python3

import shutil, os

fn1 = 'sc.txt'
fn2 = os.path.expanduser('~/fs/sc.txt')

shutil.copy2(fn1, fn2) # uses .copystat()

t1 = os.stat(fn1).st_mtime_ns
t2 = os.stat(fn2).st_mtime_ns

print(t1)
print(t2)

'''
$ ./sc.py

1673517605186013563
1673517605000000000

'''



Последнее исправление: i_am_not_ai (всего исправлений: 1)
Ответ на: комментарий от emorozov

1673518962480765443
1673518962480765443

Хм. Действительно, при копировании в пределах компьютера, на локальную ФС, так и происходит.

Видимо, sshfs (~/fs/) обрезает время mtime.

P. S. Подправил заголовок топика.

P. P. S. Пока обойдусь утилитой rsync, для простых случаев вполне сгодится.

i_am_not_ai
() автор топика
Последнее исправление: i_am_not_ai (всего исправлений: 2)
Ответ на: комментарий от emorozov

Оффтоп: Pathlib хорош но имхо недоделан и имеет тенденцию плодить обезьян с гранатами. Особенно методы типа read/write_bytes, это прям нехилая дыра чтоб высосать весь файл в память когда это не нужно. Имхо вообще метод read читая больше 128кб за раз должен исключение бросать. Плюс то и дело всплывают баги типа «//» и прочего

upcFrost ★★★★★
()
Ответ на: комментарий от emorozov

Я ж и говорю - read прочитав больше N байт должен имхо кидать исключение. Ну, например с флагом чтоб таки разрешить полный файл сожрать если очень надо, но не наоборот (по дефолту нельзя чтоб было)

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)