Конвертировать текст TXT в пакет CSV - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь написать скрипт Python для пакетного преобразования всех файлов TXT, разделенных табуляцией в исходном каталоге, в файлы CSV, разделенные запятыми, но сохраняя исходные имена файлов в выходных данных.

I 'Я довольно новичок в этом, но на данный момент мой скрипт может создавать новые файлы .csv.Тем не менее, пустая строка была добавлена ​​между каждой строкой, заполненной данными в моих выходных файлах.Как я могу решить эту проблему?

import csv
import os

source_path = r"file location"
dest_path = r"file location"

for file in os.listdir(source_path):

    # Get filename without file extension
    filename_no_extension = os.path.splitext(file)[0]

    # Concatenate filename amd paths
    dest_csv_file = str(filename_no_extension) + ".csv"
    dest_file = os.path.join(dest_path,dest_csv_file)
    source_file = os.path.join(source_path,file)

    # Open the original file and create a reader object
    with open(source_file, "r") as infile:
        reader = csv.reader(infile, dialect="excel-tab")
        with open(dest_file, "w") as outfile:
            writer = csv.writer(outfile, delimiter = ',')
            for row in reader:
                writer.writerow(row)

1 Ответ

0 голосов
/ 28 октября 2018

Добавление дополнительных символов новой строки обычно является результатом отсутствия указания параметра newline="" при открытии файлов.Если используется Python 2.x , вам вместо этого необходимо использовать rb и wb в качестве файловых режимов вместо дополнительного параметра:

import csv
import os

source_path = r"file location"
dest_path = r"file location"

for file in os.listdir(source_path):

    # Get filename without file extension
    filename_no_extension = os.path.splitext(file)[0]

    # Concatenate filename amd paths
    dest_csv_file = str(filename_no_extension) + ".csv"
    dest_file = os.path.join(dest_path,dest_csv_file)
    source_file = os.path.join(source_path,file)

    # Open the original file and create a reader object
    with open(source_file, "r", newline="") as infile, open(dest_file, "w", newline="") as outfile:
        reader = csv.reader(infile, dialect="excel-tab")
        writer = csv.writer(outfile)
        writer.writerows(reader)

Вы также можете избежатьцикл с использованием функции writerows().

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