2016-06-06 4 views
0

나는 여러 파일을 반복하고 있습니다. 개별 파일에 특정 길이가없는 경우 해당 파일의 행을 마스크하여 사용되지 않도록하고 모양이 앞으로해야 할 특정 계산에 대해 동일하게 유지되도록합니다. 지금까지 가지고있는 코드는 다음과 같습니다.파일 끝에 x 줄의 새 행 추가 Python

pattern = "C:\Users\Name\Folder\july\mid_2014-07-2?-00.csv" 
bad_files=[] 
for filename in glob.iglob(patterm): 
    num_lines = sum(1 for line in open(filename)) 
    if num_lines!=144: 
     s = 144 - num_lines 
     bad_files.append(filename) 
print bad_files 

여기까지는 144 줄이없는 파일 목록을 반환합니다. 내가하고 싶은 것은 파일에 144 줄이 없다면 (예를 들어 127 줄이있다) 파일의 끝에 빈 줄 수를 추가하여 144 줄을 만들고 싶습니다. . 그런 다음 파일의 모든 선을 마스크하여 원하는대로 모양이 유지되도록하고 싶지만 그 선은 특정 계산에 사용되지 않습니다. 이 루프에 's'개의 빈 줄을 파일의 끝에 추가하고 잘못된 파일의 모든 줄을 마스크하는 문을 추가하는 방법이 있습니까? 고려해야 할 일을 달성하기위한 쉬운 방법이 있습니까? 파일 이름이 있기 때문에 당신이 filename.write을 (할 수없는

for filename in glob.iglob(pattern): 
    with open(filename, 'r+a') as fd: 
     for num_lines, line in enumerate(fd): pass 
     # num_lines is now one *less* that the actual line count. 
     fd.write('\n' * max(0, 144 - num_lines)) 

주) : 당신이 정말로 처리를 위해 파일 이름의 목록이 필요하지 않은 경우

+2

필자는 이것을 테스트하지 않았지만'filename.write ('\ n'* s)'처럼 간단 할 지 궁금합니다. –

+0

@MattCremeens 작동합니다. 통역사를 해고하고 테스트했습니다. –

+0

Thanks @ThomasMurphy. 또한, "... 잘못된 파일의 모든 줄을 숨 깁니다"라는 의미가 확실하지 않습니다. –

답변

0

, 다음이로 축소 할 수 있습니다 끈. 쓰기은 파일 설명자에서 작동합니다.