diff --git a/octosuite/csv_loggers.py b/octosuite/csv_loggers.py index b2f7cb4..bdf497b 100644 --- a/octosuite/csv_loggers.py +++ b/octosuite/csv_loggers.py @@ -1,3 +1,4 @@ +import os import csv import logging from rich import print as xprint @@ -14,10 +15,10 @@ class CsvLogger: org_profile_row = [response.json()['avatar_url'], response.json()['name'], response.json()['login'], response.json()['id'], response.json()['node_id'], response.json()['email'], response.json()['description'], response.json()['location'], response.json()['blog'], response.json()['followers'], response.json()['following'], response.json()['twitter_username'], response.json()['public_gists'], response.json()['public_repos'], response.json()['type'], response.json()['is_verified'], response.json()['has_organization_projects'], response.json()['has_repository_projects'], response.json()['created_at'], response.json()['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{response.json()['name']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(org_profile_fields) - writecsv.writerow(org_profile_row) + with open(os.path.join("output", f"{response.json()['name'].csv}"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(org_profile_fields) + write_csv.writerow(org_profile_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -33,10 +34,10 @@ class CsvLogger: user_profile_row = [response.json()['avatar_url'], response.json()['name'], response.json()['login'], response.json()['id'], response.json()['node_id'], response.json()['bio'], response.json()['blog'], response.json()['location'], response.json()['followers'], response.json()['following'], response.json()['twitter_username'], response.json()['public_gists'], response.json()['public_repos'], response.json()['company'], response.json()['hireable'], response.json()['site_admin'], response.json()['created_at'], response.json()['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{response.json()['login']}.csv", 'w',) as file: - writecsv = csv.writer(file) - writecsv.writerow(user_profile_fields) - writecsv.writerow(user_profile_row) + with open(os.path.join("output", f"{response.json()['login'].csv}"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_profile_fields) + write_csv.writerow(user_profile_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -52,10 +53,10 @@ class CsvLogger: repo_profile_row = [response.json()['name'], response.json()['id'], response.json()['description'], response.json()['forks'], response.json()['stargazers_count'], response.json()['watchers'], response.json()['license'], response.json()['default_branch'], response.json()['visibility'], response.json()['language'], response.json()['open_issues'], response.json()['topics'], response.json()['homepage'], response.json()['clone_url'], response.json()['ssh_url'], response.json()['fork'], response.json()['allow_forking'], response.json()['private'], response.json()['archived'], response.json()['is_template'], response.json()['has_wiki'], response.json()['has_pages'], response.json()['has_projects'], response.json()['has_issues'], response.json()['has_downloads'], response.json()['pushed_at'], response.json()['created_at'], response.json()['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{response.json()['name']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_profile_fields) - writecsv.writerow(repo_profile_row) + with open(os.path.join("output", f"{response.json()['name'].csv}"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_profile_fields) + write_csv.writerow(repo_profile_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -71,10 +72,10 @@ class CsvLogger: path_content_row = [content['name'], content['size'], content['type'], content['path'], content['sha'], content['html_url']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{content['name']}_content_from_{repo_name}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(path_content_fields) - writecsv.writerow(path_content_row) + with open(os.path.join("output", f"{content['name']}_content_from_{repo_name}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(path_content_fields) + write_csv.writerow(path_content_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -90,10 +91,10 @@ class CsvLogger: user_follower_row = [stargazer['avatar_url'], stargazer['login'], stargazer['id'], stargazer['node_id'], stargazer['gravatar_id'], stargazer['type'], stargazer['site_admin'], stargazer['html_url']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{stargazer['login']}_stargazer_of_{repo_name}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_follower_fields) - writecsv.writerow(user_follower_row) + with open(os.path.join("output", f"{stargazer['login']}_stargazer_of_{repo_name}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_follower_fields) + write_csv.writerow(user_follower_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -109,10 +110,10 @@ class CsvLogger: repo_fork_row = [fork['full_name'], fork['id'], fork['description'], fork['forks'], fork['stargazers_count'], fork['watchers'], fork['license'], fork['default_branch'], fork['visibility'], fork['language'], fork['open_issues'], fork['topics'], fork['homepage'], fork['clone_url'], fork['ssh_url'], fork['fork'], fork['allow_forking'], fork['private'], fork['archived'], fork['is_template'], fork['has_wiki'], fork['has_pages'], fork['has_projects'], fork['has_issues'], fork['has_downloads'], fork['pushed_at'], fork['created_at'], fork['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{fork['name']}_fork_{count}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_fork_fields) - writecsv.writerow(repo_fork_row) + with open(os.path.join("output", f"{fork['name']}_fork_{count}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_fork_fields) + write_csv.writerow(repo_fork_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -128,10 +129,10 @@ class CsvLogger: repo_issue_row = [issue['title'], issue['id'], issue['node_id'], issue['number'], issue['state'], issue['reactions'], issue['comments'], issue['milestone'], issue['assignee'], issue['assignees'], issue['author_association'], issue['labels'], issue['locked'], issue['active_lock_reason'], issue['closed_at'], issue['created_at'], issue['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{repo_name}_issue_{issue['id']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_issue_fields) - writecsv.writerow(repo_issue_row) + with open(os.path.join("output", f"{repo_name}_issue_{issue['id']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_issue_fields) + write_csv.writerow(repo_issue_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -147,10 +148,10 @@ class CsvLogger: repo_release_row = [release['name'], release['id'], release['node_id'], release['tag_name'], release['target_commitish'], release['assets'], release['draft'], release['prerelease'], release['created_at'], release['published_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{repo_name}_release_{release['name']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_release_fields) - writecsv.writerow(repo_release_row) + with open(os.path.join("output", f"{repo_name}_release_{release['name']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_release_fields) + write_csv.writerow(repo_release_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -166,10 +167,10 @@ class CsvLogger: repo_contributor_row = [contributor['avatar_url'], contributor['login'], contributor['id'], contributor['node_id'], contributor['gravatar_id'], contributor['type'], contributor['site_admin'], contributor['html_url']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{contributor['login']}_contributor_of_{repo_name}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_contributor_fields) - writecsv.writerow(repo_contributor_row) + with open(os.path.join("output", f"{contributor['login']}_contributor_of_{repo_name}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_contributor_fields) + write_csv.writerow(repo_contributor_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -185,10 +186,10 @@ class CsvLogger: org_event_row = [event['id'], event['type'], event['created_at'], event['payload']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{organization}_event_{event['id']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(org_event_fields) - writecsv.writerow(org_event_row) + with open(os.path.join("output", f"{organization}_event_{event['id']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(org_event_fields) + write_csv.writerow(org_event_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -204,10 +205,10 @@ class CsvLogger: org_repo_row = [repository['full_name'], repository['id'], repository['description'], repository['forks'], repository['stargazers_count'], repository['watchers'], repository['license'], repository['default_branch'], repository['visibility'], repository['language'], repository['open_issues'], repository['topics'], repository['homepage'], repository['clone_url'], repository['ssh_url'], repository['fork'], repository['allow_forking'], repository['private'], repository['archived'], repository['is_template'], repository['has_wiki'], repository['has_pages'], repository['has_projects'], repository['has_issues'], repository['has_downloads'], repository['pushed_at'], repository['created_at'], repository['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{repository['name']}_repository_of_{organization}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(org_repo_fields) - writecsv.writerow(org_repo_row) + with open(os.path.join("output", f"{repository['name']}_repository_of_{organization}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(org_repo_fields) + write_csv.writerow(org_repo_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -223,10 +224,10 @@ class CsvLogger: user_repo_row = [repository['full_name'], repository['id'], repository['description'], repository['forks'], repository['stargazers_count'], repository['watchers'], repository['license'], repository['default_branch'], repository['visibility'], repository['language'], repository['open_issues'], repository['topics'], repository['homepage'], repository['clone_url'], repository['ssh_url'], repository['fork'], repository['allow_forking'], repository['private'], repository['archived'], repository['is_template'], repository['has_wiki'], repository['has_pages'], repository['has_projects'], repository['has_issues'], repository['has_downloads'], repository['pushed_at'], repository['created_at'], repository['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{repository['name']}_{username}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_repo_fields) - writecsv.writerow(user_repo_row) + with open(os.path.join("output", f"{repository['name']}_{username}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_repo_fields) + write_csv.writerow(user_repo_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -242,10 +243,10 @@ class CsvLogger: user_event_row = [event['actor']['login'], event['type'], event['repo']['name'], event['created_at'], event['payload']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{event['actor']['login']}_event_{event['id']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_event_fields) - writecsv.writerow(user_event_row) + with open(os.path.join("output", f"{event['actor']['login']}_event_{event['id']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_event_fields) + write_csv.writerow(user_event_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -261,10 +262,10 @@ class CsvLogger: user_gist_row = [gist['id'], gist['node_id'], gist['description'], gist['comments'], gist['files'], gist['git_push_url'], gist['public'], gist['truncated'], gist['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{gist['id']}_gists_{gist['owner']['login']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_gist_fields) - writecsv.writerow(user_gist_row) + with open(os.path.join("output", f"{gist['id']}_gists_{gist['owner']['login']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_gist_fields) + write_csv.writerow(user_gist_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -281,9 +282,9 @@ class CsvLogger: xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': with open(f"output/{follower['login']}_follower_of_{username}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_follower_fields) - writecsv.writerow(user_follower_row) + write_csv = csv.writer(file) + write_csv.writerow(user_follower_fields) + write_csv.writerow(user_follower_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -299,10 +300,10 @@ class CsvLogger: user_following_row = [user['avatar_url'], user['login'], user['id'], user['node_id'], user['gravatar_id'], user['type'], user['site_admin'], user['html_url']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{user['login']}_followed_by_{username}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_following_fields) - writecsv.writerow(user_following_row) + with open(os.path.join("output", f"{user['login']}_followed_by_{username}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_following_fields) + write_csv.writerow(user_following_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -318,10 +319,10 @@ class CsvLogger: user_subscription_row = [repository['name'], repository['id'], repository['description'], repository['forks'], repository['stargazers_count'], repository['watchers'], repository['license'], repository['default_branch'], repository['visibility'], repository['language'], repository['open_issues'], repository['topics'], repository['homepage'], repository['clone_url'], repository['ssh_url'], repository['fork'], repository['allow_forking'], repository['private'], repository['archived'], repository['is_template'], repository['has_wiki'], repository['has_pages'], repository['has_projects'], repository['has_issues'], repository['has_downloads'], repository['pushed_at'], repository['created_at'], repository['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{username}_subscriptions_{repository['name']}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_subscription_fields) - writecsv.writerow(user_subscription_row) + with open(os.path.join("output", f"{username}_subscriptions_{repository['name']}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_subscription_fields) + write_csv.writerow(user_subscription_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -337,10 +338,10 @@ class CsvLogger: user_org_row = [organization['avatar_url'], organization['login'], organization['id'], organization['node_id'], organization['url'], organization['description']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{organization['login']}_{username}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_org_fields) - writecsv.writerow(user_org_row) + with open(os.path.join("output", f"{organization['login']}_{username}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_org_fields) + write_csv.writerow(user_org_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -356,10 +357,10 @@ class CsvLogger: user_search_row = [user['avatar_url'], user['login'], user['id'], user['node_id'], user['gravatar_id'], user['type'], user['site_admin'], user['html_url']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{user['login']}_user_search_result_for_{query}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(user_search_fields) - writecsv.writerow(user_search_row) + with open(os.path.join("output", f"{user['login']}_user_search_result_for_{query}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(user_search_fields) + write_csv.writerow(user_search_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -375,10 +376,10 @@ class CsvLogger: repo_search_row = [repository['full_name'], repository['id'], repository['description'], repository['forks'], repository['stargazers_count'], repository['watchers'], repository['license'], repository['default_branch'], repository['visibility'], repository['language'], repository['open_issues'], repository['topics'], repository['homepage'], repository['clone_url'], repository['ssh_url'], repository['fork'], repository['allow_forking'], repository['private'], repository['archived'], repository['is_template'], repository['has_wiki'], repository['has_pages'], repository['has_projects'], repository['has_issues'], repository['has_downloads'], repository['pushed_at'], repository['created_at'], repository['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{repository['name']}_repository_search_result_for_{query}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(repo_search_fields) - writecsv.writerow(repo_search_row) + with open(os.path.join("output", f"{repository['name']}_repository_search_result_for_{query}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(repo_search_fields) + write_csv.writerow(repo_search_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -394,10 +395,10 @@ class CsvLogger: topic_search_row = [topic['name'], topic['score'], topic['curated'], topic['featured'], topic['display_name'], topic['created_by'], topic['created_at'], topic['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{topic['name']}_topic_search_result_for_{query}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(topic_search_fields) - writecsv.writerow(topic_search_row) + with open(os.path.join("output", f"{topic['name']}_topic_search_result_for_{query}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(topic_search_fields) + write_csv.writerow(topic_search_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -413,10 +414,10 @@ class CsvLogger: issue_search_row = [issue['title'], issue['id'], issue['node_id'], issue['number'], issue['state'], issue['reactions'], issue['comments'], issue['milestone'], issue['assignee'], issue['assignees'], issue['author_association'], issue['labels'], issue['locked'], issue['active_lock_reason'], issue['closed_at'], issue['created_at'], issue['updated_at']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{issue['id']}_issue_search_result_for_{query}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(issue_search_fields) - writecsv.writerow(issue_search_row) + with open(os.path.join("output", f"{issue['id']}_issue_search_result_for_{query}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(issue_search_fields) + write_csv.writerow(issue_search_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}") @@ -432,10 +433,10 @@ class CsvLogger: commit_search_row = [commit['commit']['tree']['sha'], commit['commit']['author']['name'], commit['author']['login'], commit['commit']['author']['email'], commit['commit']['committer']['name'], commit['repository']['full_name'], commit['html_url'], commit['commit']['message']] xprint(f"\n{MessagePrefix.prompt} {LogRoller.prompt_log_csv}", end="");prompt = input().lower() if prompt == 'y': - with open(f"output/{commit['commit']['tree']['sha']}_commit_search_result_for_{query}.csv", 'w') as file: - writecsv = csv.writer(file) - writecsv.writerow(commit_search_fields) - writecsv.writerow(commit_search_row) + with open(os.path.join("output", f"{commit['commit']['tree']['sha']}_commit_search_result_for_{query}.csv"), 'w') as file: + write_csv = csv.writer(file) + write_csv.writerow(commit_search_fields) + write_csv.writerow(commit_search_row) logging.info(LogRoller.logged_to_csv.format(file.name)) xprint(f"{MessagePrefix.positive} {LogRoller.logged_to_csv.format(file.name)}")