diff --git a/visidata/loaders/csv.py b/visidata/loaders/csv.py index a14b0cd2b..9d3374fcf 100644 --- a/visidata/loaders/csv.py +++ b/visidata/loaders/csv.py @@ -16,7 +16,10 @@ def guess_csv(vd, p): import csv csv.field_size_limit(2**31-1) #288 Windows has max 32-bit - line = next(p.open()) + try: + line = next(p.open()) + except StopIteration: + return if ',' in line: dialect = csv.Sniffer().sniff(line) r = dict(filetype='csv', _likelihood=0) diff --git a/visidata/loaders/json.py b/visidata/loaders/json.py index d8a0a8806..289e2a325 100644 --- a/visidata/loaders/json.py +++ b/visidata/loaders/json.py @@ -11,7 +11,10 @@ @VisiData.api def guess_json(vd, p): with p.open(encoding=vd.options.encoding) as fp: - line = next(fp) + try: + line = next(fp) + except StopIteration: + return line = line.strip() diff --git a/visidata/loaders/jsonla.py b/visidata/loaders/jsonla.py index d1b67c0de..532392258 100644 --- a/visidata/loaders/jsonla.py +++ b/visidata/loaders/jsonla.py @@ -18,10 +18,16 @@ def guess_jsonla(vd, p): ''' with p.open(encoding=vd.options.encoding) as fp: - first_line = next(fp) + try: + first_line = next(fp) + except StopIteration: + return if first_line.strip().startswith('['): - ret = json.loads(first_line) + try: + ret = json.loads(first_line) + except json.decoder.JSONDecodeError: + return if isinstance(ret, list) and all(isinstance(v, str) for v in ret): return dict(filetype='jsonla')