>

다음과 같이 파일을 제거하고 싶습니다 :

path = "username/hw/01/"
file_list = ["main.cc", "makefile"]
files = os.listdir(path)
del_files = list(set(files) - set(file_list))
for del_file in del_files:
  try:
    os.remove(path + del_file)
  except FileNotFoundError as e:
    print("\t" + e.strerror)
  except OSError as e:
    print("\t" + e.strerror)

작동하지 않는

달리려고하면

....
try:
  os.remove(path + del_file)
  os.remove(path + del_file)
except ...

예외가 발생했습니다. 그러나 ls 또는 nautilus로 확인한 후 파일이 여전히 있습니다.

작동하는 것은

files = os.listdir(path)
del_files = list(set(files) - set(file_list))
while (del_files):
  for del_file in del_files:
    try:
      os.remove(path + del_file)
      time.sleep(0.5)
      print("\t\tRemoving " + path + del_file)
    except FileNotFoundError as e:
      print("\t" + e.strerror)
    except OSError as e:
      print("\t" + e.strerror)
  files = os.listdir(path)
  del_files = list(set(files) - set(file_list))

이것은 엄청나게 추악합니다. print 문이 포함되면 요청 된 모든 파일을 가져 오기 위해 두 번 이상 실행됩니다. 내가 무엇을 놓치고 있습니까?

중요하다면

$ python3 --version
Python 3.4.3


  • 답변 # 1

    os.remove(os.path.join(path, del_file)) 를 사용해야 할 수도 있습니다   os.remove(path + del_file) 대신  경로가 경로 구분자로 끝나지 않는 경우 문서 : os.path.join ()

  • 이전 design patterns - UML 다이어그램의 패키지 내에서 여러 구성 요소를 그룹화 할 수 있습니까?
  • 다음 html - faviconico 오류가 발생합니다