Записать список байтов в файл, но некоторые записи потерялись - PullRequest
0 голосов
/ 17 января 2019

Я новичок в программировании и получил проблему с записью байтов. Вот что я написал:

file = open('filePath/input.train', 'wb')
for i in range(len(myList)):
    file.write(bytes((myList[i]),'UTF-8'));

Если я здесь напечатаю «я», то это 629.

Суффикс .train требуется проектом. Чтобы это проверить, я читаю и записываю в текстовый файл:

file = open('filePath/input.train', 'rb')
content = file.read()
testFile = open('filePath/test.txt', 'wb')
testFile.write(content)

Теперь проблема в том, что len (list) = 629, а я получил 591 строку в файле test.txt. Это принесло мне проблемы позже.

Почему это произошло и как мне это решить?

1 Ответ

0 голосов
/ 17 января 2019

Во-первых, когда вы открываете и записываете файл, нужно запомнить, что закрываете файл после записи. Вот так.

file = open('filePath/input.train', 'wb')
for i in range(len(myList)):
    file.write(bytes((myList[i]),'UTF-8'));
file.close()

во-вторых, код Python не должен иметь ";"

в-третьих, file - это ключевое слово python, поэтому не используйте file в качестве имени переменной. Вы можете использовать f или my_file или кого угодно, но не используйте ключевое слово python.

в-четвертых, Python имеет iterator, используйте iterator лучше, чем ваш for i in range(len(xxx)).

все это, ваш код может выглядеть следующим образом.

f = open('filePath/input.train', 'wb')
for line in myList:
    f.write(bytes(line, 'UTF-8'))
f.close()
...