반응형
Recent Posts
Recent Comments
관리 메뉴

개발잡부

[python] .txt 파일 라인 카운트 본문

Python

[python] .txt 파일 라인 카운트

닉의네임 2023. 5. 19. 12:04
반응형

파일의 카운트를 비교하여 데이터의 일치여부를 판단. 

def compare_row(file_name):
    a = open(file_a + file_name, 'r')
    b = open(file_b + file_name, 'r')
    row_a = len(a.readlines())
    row_b = len(b.readlines())
    a.close()
    b.close()
    if row_a == row_b :
        return True
    else:
        return False

myFile = open('파일명''r')

{내용}

myFile.close()

 

 

{내용} 을 코딩

 

1. read()

라인 수를 구한다는 이야기는 줄바꿈 문자('\n') 의 갯수를 구한다는 이야기와 같으므로

print(myFile.read().count("\n")+1)

 

별로여..

 

2. readLine()

아니면 readLine()을 통해 반복문을 활용해 읽어들일 값이 없을 때 까지 매번 count를 해주는 방법도..별로.

cnt = 0
while True:
    if myFile.readline()=='':
        break
    cnt += 1
print(cnt)
 

 

3. readLines()

readLines() 를 이용하면 보다 쉽게 구할 수 있습니다.

readLines() 는 줄 바꿈을 기준으로 매 줄을 각각 리스트의 요소로 하는 리스트를 반환해주기 때문에 반환되는 리스트의 길이를 구하면 그게 답이됩니다.

print(len(myFile.readlines()))

 

 

 

4. enumerate()

enumerate() 를 이용하면 파일 내용의 각각 line을 index와 연결되있는 데이터를 반환

그것을 리스트로 만들면, 즉 list(enumerate(myFile)) 은 다음과 같은 list를 반환

 

이를 활용해서 리스트 마지막 튜플의 첫번째 요소를 구해 +1을 해준다

별로여..

 

print(list(enumerate(myFile))[-1][0]+1)

 

예제

# -*- coding: utf-8 -*-

import json
import time
import glob
import os
import datetime as dt
import urllib3
import filecmp
import pandas as pd

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)


def compare(file_name):
    ret = filecmp.cmp(file_a + file_name, file_b + file_name)
    return ret

def compare_row(file_name):
    a = open(file_a + file_name, 'r')
    b = open(file_b + file_name, 'r')
    row_a = len(a.readlines())
    row_b = len(b.readlines())
    a.close()
    b.close()
    if row_a == row_b :
        return True
    else:
        return False



##### MAIN SCRIPT #####
if __name__ == '__main__':
    file_a = "/Users/doo/doo_py/homeplus/attribute/ab_test/as_is/";
    file_b = "/Users/doo/doo_py/homeplus/attribute/ab_test/to_be/";

    files_a = os.listdir(file_a)
    files_b = os.listdir(file_b)
    if len(files_a) < 1: print("Empty as-is directory")
    if (len(files_a) != len(files_b)):
        print("file 갯수 맞지 않음")
        print("종료해주세요 선생님 Ctrl + C")
        time.sleep(10)
    row = 0;
    com = 0;

    for file_name in files_a:
        print("compare..")
        if compare_row(file_name) != True:
            row = row +1
        if compare(file_name) != True:
            com = com +1

    print("----------------------------------------")
    print("----------------------------------------")
    print("row 수 불일치 : "+ str(row))
    print("----------------------------------------")
    print("----------------------------------------")
    print("동일파일 비교 불일치 : "+ str(com))
    print("----------------------------------------")
    print("----------------------------------------")
    print("Done.")
반응형

'Python' 카테고리의 다른 글

[python] DB data to json  (0) 2023.09.04
[python] 오탈자 교정 - SymSpellpy  (0) 2023.07.02
[python] 데이터검증  (0) 2023.05.17
[python] API 응답시간 확인  (0) 2023.05.04
[python] DB data to json file  (0) 2023.04.30
Comments