#python #bash
Вопрос:
Я пытаюсь преобразовать скрипт bash в python, и у меня есть фрагмент кода, который я хочу понять лучше. Сценарий:
dd < "$file" skip=$start count=$((end - start)) iflag=skip_bytes 2> /dev/null |
(
if [ -n "$dir" ]; then
mkdir -p -- "$dir/$subdir"
cd -- "$dir/$subdir"
fi
cpio -i "$@"
)
Насколько я понимаю, я читаю из файла, который я сбрасываю, по байтам «$start» и иду дальше count
.
Поэтому я предполагаю, что смогу сделать это с seek
помощью .
Как мне перевести iflag=skip_bytes
на python ?
Комментарии:
1. «Как мне перевести
iflag=skip_bytes
на python ?» Вы уже сделали это, если интерпретируетеskip
как байты. Иначе это были бы блоки.2. Возможно, вы захотите добавить соответствующую справочную/справочную информацию для своей платформы.
iflag
dd
Например , для BSD нет параметра.
Ответ №1:
От https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html#dd-invocation
‘пропустить=n’
Пропустите n байтовых блоков ‘ibs’во входном файле перед копированием. Если указано «iflag=skip_bytes», n интерпретируется как количество байтов, а не количество блоков.
Итак, если бы у вас не было iflag=skip_bytes
в вашем сценарии bash, вам пришлось бы умножить $start
на размер блока, прежде чем искать. Но поскольку он iflag=skip_bytes
есть, умножение не требуется, и вам нужно искать только по $start
байтам.
Комментарии:
1. То же самое касается
count
тех, которые обычно учитываются в блоках, но используют байты, еслиiflag=skip_bytes
таковые имеются.