2014-07-10 2 views
0

간단하거나 쉽지는 모르겠지만 많은 csv 및 txt 파일이있는 폴더가 있습니다. 이름의 끝에 0이없는 모든 CSV 파일을 삭제해야합니다. 나는 이것을 할 수있는 쉬운 방법이 있습니까?이름이 조건을 충족하면 특정 확장명의 파일을 삭제하십시오.

폴더가 내 스크립트와 동일한 폴더이므로 파일 경로를 입력 할 필요가 없습니다. 파이썬 3.3.3을 실행 중입니다. 어떤 아이디어라도 대단히 감사합니다 !!

감사합니다. Padraic의 뛰어난 응답과 같은 맥락에서

+3

무엇을 시도 했습니까? 나는 문제가 보이지 않는다. 파일을 나열하고 삭제하는'os' 모듈이 있습니다. 너의 문제는 무엇인가? – luk32

+0

플랫폼? 유닉스? Windows? – dawg

+0

네 말이 맞아. 충분히 명확하지 않아. os 모듈에 대해 알고 있는데, 내가 모르는 것은 모든 파일 이름을 통해 내가 찾고있는 확장자와 파일 이름을 가진 조건을 적용하는 방법을 확인하는 방법입니다. 말이 돼? – rodrigocf

답변

2
import glob 
import os 
for f in glob.glob("*.csv"): # find all csv files 
    if not f.endswith("0.csv"): 
     os.remove(f) # if file name ends in 0.csv, delete it 
+1

조건이 나를 좋아하는 것 같아요. OP의 질문에 대답하기위한 f.endswith ("0.csv")'이여 야합니다. – remram

3

:

import os, glob 
files = [file for file in glob.glob("path/to/files/*.csv") if not file.endswith("0.csv")] 
for file in files: 
    os.remove(file) 

내가 먼저 목록을 구축하고 제거를 통해 반복하는 작은 청소기를 보이는 생각합니다. YMMV. 저는 다음과 같이 쓸 수 있기 때문에 이것을하고 싶습니다.

with open("path/to/files/file_removal.log","w") as f: 
    for file in files: 
     try: 
      os.remove(file) 
     except Exception as e: 
      f.write("! The file {} could not be removed:\n".format(file)+ 
        "-->{}\n".format(e)) 
     else: 
      f.write("The file {} was removed successfully\n".format(file)) 
+2

여기와 같아야합니다. '... 그렇지 않으면 file.endswith ("0.csv")] '. 또한'file'은 내장 타입이므로 변수 이름으로 피해야합니다. – remram

+1

@remram이 사실입니까? 물론 py3에는 없지만 나는 py2에서 많은 경험이 없다. –

+0

그래! [여기] (https://docs.python.org/2/library/functions.html#file)를 참조하십시오. – remram

관련 문제