首页 > 解决方案 > 将 bash 翻译成 python;“dd”命令“iflag=skip_bytes”如何转换?

问题描述

我正在尝试将 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 ?

标签: pythonbash

解决方案


来自https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html#dd-invocation

'跳过=n'</p>

在复制之前跳过输入文件中的 n 个“ibs”字节块。如果指定了“iflag=skip_bytes”,则 n 被解释为字节数而不是块数。

因此,如果您的 bash 脚本中没有,则必须在查找之前乘以块大小。但是由于存在,因此不需要乘法,您只需要按字节查找。iflag=skip_bytes$startiflag=skip_bytes $start


推荐阅读