40 lines
1017 B
Python

import csv
import os
import sys
import tabulate
def main():
try:
file_name = sys.argv[1]
except IndexError:
print("Too few command-line arguments")
sys.exit(1)
if len(sys.argv) > 2:
print("Too many command-line arguments")
sys.exit(1)
if not os.path.isfile(file_name): # Or try opening and catch FileNotFoundError
print(f"File does not exist")
sys.exit(1)
if not file_name.endswith('.csv'):
print(f"Not a CSV file")
sys.exit(1)
grid = get_grid_from_csv(file_name)
print(grid)
def get_grid_from_csv(file_name: str) -> str:
headers = None
table = []
with open(file_name, 'r') as file_object:
reader = csv.DictReader(file_object)
for row in reader:
if headers is None:
headers = list(row.keys())
table.append(tuple(row[field] for field in row))
return tabulate.tabulate(table, headers, tablefmt="grid")
if __name__ == "__main__":
main()