Индекс списка работает на macOS, но не Windows? - PullRequest
3 голосов
/ 23 апреля 2020

Итак, я сделал скрипт на macOS и разослал его некоторым друзьям.

Однако я получил много жалоб от моих друзей, используя Windows, что скрипт не работает для них.

Конечно, я установил Windows на раздел и запустил свой сценарий, и он не работал.

У всех одна и та же ошибка.

    data[k+1][16] = 0
IndexError: list assignment index out of range

Вот пример части кода, где он терпит неудачу

df = pd.read_csv("passandpy.csv", usecols=[16], skipinitialspace=True)
col16 = df['Failed Attempts'].tolist()
data = [line for line in csv.reader(open('passandpy.csv'))]
data[k+1][16] = 0
csv.writer(open('passandpy.csv', 'w')).writerows(data)

Предполагается, что столбец 16 считывается из файла csv и преобразуется в список. Затем я создаю другой список с именем data и записываю все строки из CSV в этот список. Я редактирую значения в этом списке, а затем сохраняю список обратно в CSV.

Еще одна вещь, которую я должен упомянуть, это то, что после запуска этого скрипта на Windows он больше не будет работать и в macOS.

Как только я удаляю файл csv, созданный на Windows, и генерирую его с помощью скрипта, используя macOS, скрипт снова работает.

1 Ответ

0 голосов
/ 29 апреля 2020

Хорошо, я нашел проблему.

На Windows он записывал дополнительные пустые строки в файл .csv. Это привело к тому, что индекс списка перестал работать.

Я исправил это с помощью этого куска кода.

data = []
lines = [line for line in csv.reader(open('passandpy.csv','r'))]
for line in lines:
    if line == []:
        continue

Он фильтрует пустые строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...