numpy.loadtxt считает, что последний файл пуст

#python #csv #numpy

#python #csv #numpy

Вопрос:

Я пытаюсь просмотреть свой каталог и сгенерировать массив из каждого файла csv, заканчивающийся на «_chisqtype2_sheet.csv», и добавить его в список chisq2data. Все работает нормально, за исключением того, что код считает, что последний файл в H пуст. Я попытался добавлять и вычитать файлы и обнаружил, что независимо от того, какой файл является последним, код всегда обнаружит, что он пуст.

 H=os.listdir(".")
H= [x for x in H if x.endswith("_chisqtype2_sheet.csv")]

chisq2data = []

for fname in H:
    chi2 = np.loadtxt(fname, delimiter=",", skiprows=0)
    chisq2data.append(chi2)
    print fname
    print chi2
  

Вывод fname показывает, что все файлы найдены.
При печати chi2 отображаются правильные массивы для первых файлов и пустой массив [] для последнего файла.

Комментарии:

1. Вы абсолютно уверены, что там нет никаких пустых файлов? Сколько у вас есть CSV-файлов, которые соответствуют этому условию? Что произойдет, если у вас есть только один файл, который, безусловно, не пуст?

2. Что такое «последний» файл? Что произойдет, если вы перетасуете записи в H, запустите свой цикл, снова перетасуете их и запустите его снова?

3. Все ли ваши файлы данных сохранены с одинаковой кодировкой? Это странная проблема. Кроме того, пока я хватаюсь за соломинку, присутствуют ли все ожидаемые имена файлов (и никаких дополнительных пустых имен файлов) в print(H) ?

4. Я попробовал приведенный выше код и не смог воспроизвести это поведение. Он правильно печатает массивы, независимо от того, сколько существует файлов csv (включая тестирование всего с 1 файлом csv). Пробелы не появились. Загадочно.