Skip to content

Conversion Script to turn output.txt into csv #17

Description

@crxssrazr93

If you create a folder called csv, and place the --output file as a .txt and run the script, it will look at all .txt files in that folder and convert them into a usable .csv.

I tried for hours but I wasn't able to integrate the conversion logic into the project for a seamless experience as I am not very good at python.

Hope this helps someone.

Script:

import argparse
import csv
import os
import ast

def process_input(input_file):
    output_file = os.path.splitext(input_file)[0] + '.csv'

    with open(input_file, 'r') as f:
        lines = f.readlines()

    headers = ['Method', 'Code', 'Server', 'Port', 'Host', 'Location']
    data = []

    for line in lines:
        line = line.strip()
        if line:
            try:
                line_data = ast.literal_eval(line)
                method = line_data.get('method', '')
                code = str(line_data.get('status_code', ''))
                server = line_data.get('server', '')
                port = line_data.get('port', '')
                host = line_data.get('host', '')
                location = line_data.get('location', '')

                if location and '->' in location:
                    host, location = location.split(' -> ', 1)

                data.append([method, code, server, port, host, location])
            except ValueError:
                print(f"Skipping invalid line: {line}")

    with open(output_file, 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(headers)
        writer.writerows(data)


def main():
    parser = argparse.ArgumentParser(description='Process .txt files to .csv')
    parser.add_argument('--input-dir', type=str, help='Input directory path', default='.')

    args = parser.parse_args()

    input_dir = args.input_dir

    for filename in os.listdir(input_dir):
        if filename.endswith('.txt'):
            input_file = os.path.join(input_dir, filename)
            process_input(input_file)


if __name__ == '__main__':
    main()

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions