python遍历包含txt文件的文件夹,将将txt文件的个数从1到最后排序,将序号放在csv文件的第一列,txt文件的每行的第一个数放在csv的每行的第二列,若两行或两行以上则放置多个数在第二列以逗号隔开,每个txt文件的行数放在csv的第三列,每行的第六个数放在csv的第四列代码,为表格加入表头,第一列表头名为Id,第二列表头为class,第三列表头为number of classes,第四列表头为conf,第五列表头为result的代码,当第二列包含7或8且第三列大于等于2时将第五列标注为1,其余第五列标注为0的代码
时间: 2024-04-10 10:34:56 浏览: 126
moxing_python数据清洗_读取csv文件_数据清洗_
5星 · 资源好评率100%
以下是根据您的要求编写的代码:
```python
import os
import csv
def process_txt_file(file_path):
txt_data = []
with open(file_path, 'r') as file:
lines = file.readlines()
for line in lines:
line_data = line.strip().split()
txt_data.append(line_data)
return txt_data
def process_folder(folder_path):
txt_files = [file for file in os.listdir(folder_path) if file.endswith(".txt")]
txt_files.sort()
csv_data = []
for i, file in enumerate(txt_files):
file_path = os.path.join(folder_path, file)
txt_data = process_txt_file(file_path)
id_value = i + 1
class_values = []
number_of_classes = len(txt_data)
conf_value = None
result_value = None
for line_data in txt_data:
class_values.append(line_data[0])
if len(line_data) >= 6:
conf_value = line_data[5]
if '7' in class_values or '8' in class_values:
if number_of_classes >= 2:
result_value = 1
else:
result_value = 0
csv_row = [id_value, ','.join(class_values), number_of_classes, conf_value, result_value]
csv_data.append(csv_row)
return csv_data
def save_to_csv(csv_data, csv_file_path):
with open(csv_file_path, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Id', 'class', 'number of classes', 'conf', 'result'])
writer.writerows(csv_data)
folder_path = "path/to/folder"
csv_file_path = "path/to/output.csv"
csv_data = process_folder(folder_path)
save_to_csv(csv_data, csv_file_path)
```
您需要将 `"path/to/folder"` 替换为包含 txt 文件的文件夹的实际路径,并将 `"path/to/output.csv"` 替换为保存输出 csv 文件的实际路径。执行该代码将遍历文件夹中的 txt 文件,根据您的要求处理数据并将结果保存在 csv 文件中。
阅读全文