写一段代码遍历/public/work/Personal/wuxu/qiantao_17下以.report结尾的文件,将其第一行作为前两列,然后将第5到41行内容完成行转列
时间: 2023-08-18 19:08:48 浏览: 86
单链表可找出最小值点
好的,以下是 Python 代码实现:
```python
import os
dir_path = "/public/work/Personal/wuxu/qiantao_17"
for root, dirs, files in os.walk(dir_path):
for file in files:
if file.endswith(".report"):
file_path = os.path.join(root, file)
with open(file_path, "r") as f:
lines = f.readlines()
# 取第一行作为前两列
first_line = lines[0].strip().split()
col1, col2 = first_line[0], first_line[1]
# 取第5到41行内容并完成行转列
rows = lines[4:41]
matrix = []
for row in rows:
values = row.strip().split()
matrix.append(values)
matrix_T = list(map(list, zip(*matrix)))
# 输出结果
print(col1, col2, *matrix_T, sep="\t")
```
其中,`os.walk()` 函数可以遍历指定目录下的所有文件和文件夹;`file.endswith(".report")` 可以筛选以 `.report` 结尾的文件;`open()` 函数用于打开指定路径的文件,`readlines()` 函数可以读取文件的所有行;`strip()` 函数可以去除字符串首尾的空白字符,`split()` 函数可以将字符串按照空格分割成列表;`map()` 函数可以对列表中的每个元素进行相同的操作,`zip()` 函数可以将多个列表中的元素按照相同位置进行配对,`list()` 函数可以将配对后的结果转化为列表;`sep="\t"` 表示每个元素之间用制表符隔开输出。
阅读全文