2017-11-22 9 views
0

사용자 정의 디렉토리에서 파일 목록을 가져 오는 데 약간의 문제가 있습니다. 다음 코드는 정상적으로 작동합니다.Python - 사용자 입력으로 파일 디렉토리 받기

inputdirectory = r'C:/test/files' 
inputfileextensions = 'txt' 
files = glob.glob(inputdirectory+"*."+inputfileextensions) 

하지만 사용자가 위치를 입력 할 수있게하려고합니다. 다음 코드를 시도했습니다 :

inputdirectory = input("Please type in the full path of the folder containing your files: ") 
inputfileextensions = input("Please type in the file extension of your files: ") 
files = glob.glob(inputdirectory+"*."+inputfileextensions) 

그러나 작동하지 않습니다. 오류 메시지는 나타나지 않지만 파일은 비어있는 것으로 반환됩니다. 따옴표가있는 디렉토리에 정방향 및 역방향 슬래시를 입력하려고 시도했지만 작동시키지 못했습니다. 또한 'r'을 사용하여 원시 문자열로 입력을 변환하려고 시도했지만 어쩌면 구문에 의해 잘못되었습니다. 어떤 아이디어?

+0

인쇄 :'inputdirectory + "*."+ inputfileextensions' –

답변

1

첫 번째 버전이 어떻게 작동하는지 잘 모릅니다. 당신이없는 무언가가 당신이 달성하려고하는 것을 실현할 수 위의 값을 보면

inputdirectory+"*."+inputfileextensions == "C:\test\files*.txt" 

: 변수가 정의 된 방법으로, 당신은 같은 무언가로 glob에 입력을해야한다. 대신 백 슬래시 연산자를 사용하여 두 경로를 조인해야합니다. 같은 뭔가이 변화

os.path.join(inputdirectory, "*."+inputfileextensions) == "C:\test\files\*.txt" 

는, 코드에 관계없이 입력이 사용자 또는 사전 정의에서 가져온 여부에 작동합니다.

+0

감사합니다. 이것은 완벽하게 작동합니다. 다른 사람이 비슷한 내용의 댓글을 달았지만 자신의 의견을 삭제 했으므로 이깁니다. – Actuary

+0

도와 드리겠습니다. 답변이 도움이된다면, 수락 된 것으로 표시 할 수 있습니다 :) – ThePretendProgrammer

1

경로를 os.path.join으로 시도하십시오. 그것은 슬래시 문제를 다룰 것입니다.

import os 
... 
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions))