Удалить пустые строки в файле CSV в Python - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть несколько CSV-файлов в папке, и я пытаюсь удалить все пустые строки и переместить файлы новостей в новую папку.

Вот код, который у меня есть:

import csv
import glob
import os
import shutil

path = 'in_folder/*.csv'
files=glob.glob(path)

#Read every file in the directory

x = 0 #counter

for filename in files:

    with open(filename, 'r') as fin:
        data = fin.read().splitlines(True)

        with open(filename, 'w') as fout:
            for line in fin.readlines():
                if ''.join(line.split(',')).strip() == '':
                    continue
                fout.write(line)
            x += 1            


dir_src = "in_folder"
dir_dst = "out_folder"


for file in os.listdir(dir_src):
    if x>0:
        src_file = os.path.join(dir_src, file)
        dst_file = os.path.join(dir_dst, file)
        shutil.move(src_file, dst_file)

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

Ответы [ 2 ]

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

попробуйте это.

for filename in files:
    with open(filename, 'r') as fin:
        data = fin.read().splitlines(True)
        with open(filename, 'w') as fout:
            for line in data:
                if ''.join(line.split(',')).strip() == '':
                    continue
                fout.write(line)
            x += 1
0 голосов
/ 28 ноября 2018

Вы можете просто вывести каждую строку в новый файл, после этого не нужно делать никаких действий:

dir_src = "in_folder/*.csv"
dir_dst = "out_folder"

files = glob.glob(dir_src)

# Read every file in the directory

x = 0 # counter

for filename in files:
    outfilename = os.path.join(dir_dst, os.path.basename(filename))
    with open(filename, 'r') as fin:
        with open(outfilename, 'w') as fout:
            for line in fin:
                if ''.join(line.split(',')).strip() == '':
                    continue
                fout.write(line)
            x += 1            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...