У меня есть сценарий Python, который читает файл (обычно от оптических сред), маркировка нечитабельных секторов, чтобы позволить перепопытке читать сказала что нечитабельные секторы относительно другого оптического читателя.
Я обнаружил, что мой сценарий не работает с блочными устройствами (например,/dev/sr0), для создания копии содержавшей файловой системы ISO9660/UDF, потому что os.stat().st_size
нуль. Алгоритм в настоящее время должен знать размер файла заранее; я могу изменить это, но проблема (знания размера блочного устройства) остается, и этому не отвечают здесь, таким образом, я открываю этот вопрос.
Я знаю о следующих двух, связанных ТАК вопросы:
Поэтому я спрашиваю: в Python, как я могу получить размер файла файла блочного устройства?
Самое "чистое" (т.е. не зависящее от внешних томов и наиболее многоразовое) решение на Python, которого я достиг, заключается в открытии файла устройства и поиске в конце, возвращая смещение файла:
def get_file_size(filename):
"Get the file size by seeking at end"
fd= os.open(filename, os.O_RDONLY)
try:
return os.lseek(fd, 0, os.SEEK_END)
finally:
os.close(fd)