Python Dict to CSV: ожидается блок с отступом
Попытка записать вывод в CSV и получить ошибку отступа. Я уверен, что это глупая ошибка, но я не могу понять, почему это происходит.
#!/usr/bin/env python
import csv
import copy
import os
import sys
import glob
#get current working dir, set count, and select file delimiter
os.chdir('/Users/Briana/Documents/Misc./PythonTest')
#parses through files and saves to a dict
series = {}
for fn in glob.glob('*.txt'):
with open(fn) as f:
series[fn] = (1 for line in f if line.strip() and not line.startswith('#'))
print series
#save the dictionary with key/val pairs to a csv
with open('seriescount.csv', 'wb') as f:
w = csv.DictWriter(f, series.keys()) #error thrown here
w.writeheader()
w.writerow(sum(names.values()))
Полный возврат:
Fri Jul 24 03:13 PM [Briana PythonTest] (dev) $ ./SeriesCount.py
File "./SeriesCount.py", line 22
w = csv.DictWriter(f, series.keys())
^
IndentationError: expected an indented block
1 ответ
Решение
Если вы отправили здесь свой код в точности так, как он есть на вашем компьютере, значит, есть пробелы и вкладки, смешанные вместе. Если я скопирую код в том виде, в котором он указан в вашем вопросе, он будет последовательно выделен пробелами; однако, если я нажимаю "изменить", а затем проверяю код, первые 21 строки имеют отступы, а строки 22-24 - отступы. Код ниже исправляет эту ошибку; позаботьтесь о том, чтобы скопировать его точно так, как оно выглядит здесь:
#!/usr/bin/env python
import csv
import copy
import os
import sys
import glob
#get current working dir, set count, and select file delimiter
os.chdir('/Users/Briana/Documents/Misc./PythonTest')
#parses through files and saves to a dict
series = {}
for fn in glob.glob('*.txt'):
with open(fn) as f:
series[fn] = (1 for line in f if line.strip() and not line.startswith('#'))
print series
#save the dictionary with key/val pairs to a csv
with open('seriescount.csv', 'wb') as f:
w = csv.DictWriter(f, series.keys()) #error thrown here
w.writeheader()
w.writerow(sum(names.values()))
Есть три общие причины IndentationError: expected an indented block
:
- Пренебрегать или забывать делать отступы вообще
- Закомментирование части блока с отступом
- Смешивание табуляции и пробелов в отступе