Написание последовательных файлов с различными видами строк или записей

Измените это:

csvFile = open('log.csv', 'w', newline='')

К этому:

csvFile = open('log.csv', 'w', newline='', encoding='utf8')

csv документации модуля :

Так как open() используется для открытия CSV-файла для чтения, файл по умолчанию будет декодирован в unicode с использованием системного кодирования по умолчанию (см. locale.getpreferredencoding() ). Чтобы декодировать файл с использованием другой кодировки, используйте аргумент кодировки open:

import csv
with open('some.csv', newline='', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
         print(row)

То же самое относится к записи в чем-то отличном от системного по умолчанию кодирования: укажите аргумент кодирования при открытии выходного файла.

Я полагаю, что ваша системная кодировка по умолчанию не является utf8. Вы можете проверить это следующим образом:

import locale
locale.getpreferredencoding()

Надеюсь, что это поможет!

0
задан Huzo 19 January 2019 в 07:35
поделиться

1 ответ

Есть идеи?

В FILE-CONTROL используйте ORGANIZATION LINE SEQUENTIAL.

При использовании DATA DIVISION.,

FILE SECTION.
FD OUTPUT-FILE.
01 OUTPUT-RECORD PIC X(80).

WORKING-STORAGE SECTION.
01 CONSTANT-TEXT-1 PIC X(5) VALUE "!---!".
01 CONSTANT-TEXT-2 PIC X(17) VALUE "This is a report!"
01 CONSTANT-TEXT-3 PIC X(28) VALUE "Here is the list of records:"
01 CONSTANT-TEXT-4 PIC X(17) VALUE "Number of crimes:".
01 PERSON-RECORD.
    05 ID PIC 999.
    05 NAME PIC X(10).
01 CRIMES.
    05 NAME PIC X.
    05 NO-OF-CRIME PIC 99.

В PROCEDURE DIVISION для операторов WRITE используйте

WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-1
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-2
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-3
WRITE OUTPUT-RECORD FROM CONSTANT-TEXT-4
WRITE OUTPUT-RECORD FROM PERSON-RECORD
WRITE OUTPUT-RECORD FROM CRIMES

в любой последовательности, в которой вы хотите произвести отчет.

Вам не нужно использовать CONSTANT-TEXT, используйте любое имя, которое имеет значение для программы.

0
ответ дан Rick Smith 19 January 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: