本关任务:用二进制方式打开指定的一个文件,在每一行前加行号,并且将结果输出到控制台上。 举例来说,一个二进制文件的内容如下: Hello World From China 最后打印到控制台的结果是: 1: Hello 2: World 3: From 4: China
时间: 2024-10-09 07:04:03 浏览: 77
本关任务需要编写一个程序,首先通过二进制模式打开给定的文件,然后逐行读取内容,对每行数据添加行号,最后将处理后的行号和内容打印到控制台上。这个过程可以分为以下几个步骤:
1. 打开文件:使用`open()`函数以二进制模式(`"rb"`)打开文件,因为我们要直接操作字节流。
```python
with open('file.bin', 'rb') as binary_file:
```
2. 读取并转换:遍历文件对象,每读取一行,将其转换成字符串。在Python中,可以先读取字节数组,然后用`.decode()`解码成文本。
```python
offset = 0
for line in binary_file.read().splitlines():
byte_line = line.encode()
# 对于非UTF-8编码的文件,这里可能需要调整编码方式
```
3. 行号生成:计算当前行的行号,通常从1开始。
```python
row_number = offset + 1
offset += len(line) + 1 # 加上换行符的长度
```
4. 输出格式化:将行号和内容组合成字符串,如`"{row_number}: {line}"`,然后打印到控制台。
```python
formatted_line = f"{row_number}: {byte_line.decode()}"
print(formatted_line)
```
5. 关闭文件:记得在循环结束后关闭文件。
```python
binary_file.close()
```
完整示例代码:
```python
# ... (以上代码)
for line in binary_file.read().splitlines():
# ... (中间部分)
formatted_line = f"{row_number}: {byte_line.decode()}"
print(formatted_line)
# ... (关闭文件)
```
阅读全文