Как преобразовать CSV-файл dos2unix с помощью скрипта Python - PullRequest
1 голос
/ 13 октября 2019

Я хочу преобразовать CSV-файл в формат dos2unix, используя python в Windows. Теперь я делаю это вручную, поместив CSV-файл в рабочую область (сервер) и выполнив команду в putty. [Команда: dos2unix file_received filename]

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Следующий код поможет:

import csv
out_file_path = 
in_file_path = 
with open(out_file_path,'w',newline='') as output_file:
    writer = csv.writer(output_file, dialect=csv.unix_dialect)
    with open(in_file_path,newline='') as input_file:
        reader = csv.reader(input_file)
        for row in reader:
            writer.writerow(row)
1 голос
/ 13 октября 2019

dos2unix (насколько я помню) в значительной степени удаляет только задние переводы строк с каждой строки. Итак, есть два способа сделать это.

with open(filename, "w") as fout: 
    with open(file_received, "r") as fin:
        for line in fin:
            line = line.replace('\r\n', '\n')
            fout.write(line)

или вы можете использовать подпроцесс для непосредственного вызова команды UNIX. ПРЕДУПРЕЖДЕНИЕ : Это плохо, поскольку вы используете параметр file_received, и люди могут пометить в нем исполняемые команды.

import subprocess
subprocess.call([ 'dos2unix', file_received, filename, shell=False])

Я не проверял выше. shell=False (по умолчанию) означает, что оболочка UNIX не будет вызываться для процесса. Это хорошо, чтобы не вводить команды в параметры, но вам может понадобиться shell=True, чтобы команда работала правильно.

...