python遍历包含txt文件的文件夹,将将txt文件的个数从1到最后排序,将序号放在excel文件的第一列,每行的第一个数放在Excel的每行的第二列,若两行或两行以上则放置多个数在第二列以逗号隔开,每个txt的行数放在Excel的第三列,每行的第六个数放在csv的第四列代码,为表格加入表头,第一列表头名为Id,第二列表头为class,第三列表头为number of classes,第四列表头为conf,第五列表头为result的代码,当第二列包含7或8且第三列大于等于2时将第五列标注为1,其余第五列标注为0的代码
时间: 2024-04-20 18:23:14 浏览: 60
import os
import csv
def traverse_folder(directory):
files = []
for root, dirs, filenames in os.walk(directory):
for filename in filenames:
if filename.endswith(".txt"):
files.append(os.path.join(root, filename))
return files
def get_file_count(files):
count_dict = {}
for file in files:
dir_name = os.path.dirname(file)
count = count_dict.get(dir_name, 0)
count += 1
count_dict[dir_name] = count
sorted_counts = sorted(count_dict.items(), key=lambda x: x[1])
return sorted_counts
def get_file_lines(file):
with open(file, 'r') as f:
lines = f.readlines()
return len(lines)
def write_to_excel(files, sorted_counts):
with open('output.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(["Id", "class", "number of classes", "conf", "result"])
for i, (dir_name, count) in enumerate(sorted_counts):
file_names = [os.path.basename(file) for file in files if os.path.dirname(file) == dir_name]
file_lines = [get_file_lines(file) for file in files if os.path.dirname(file) == dir_name]
writer.writerow([i+1, ','.join(file_names), count, file_lines[0], int(count >= 2 and '7' in file_names[0][0] or '8' in file_names[0][0])])
directory = 'path/to/folder'
files = traverse_folder(directory)
sorted_counts = get_file_count(files)
write_to_excel(files, sorted_counts)
print("Done!")
阅读全文