하나의 디렉토리에 파일을 읽으 려합니다.파이썬에서 glob 패턴을 사용하여 디렉토리의 파일을 읽는 방법은 무엇입니까?
디렉토리에는 다음이 포함 스크립트를 실행
ABC1.csv
ABC1_1.csv
ABC1_2.csv
ABC11.csv
ABC11_1.csv
ABC11_3.csv
ABC11_2.csv
ABC13_4.csv
ABC13_1.csv
ABC17_6.csv
ABC17_2.csv
ABC17_4.csv
ABC17_8.csv
동안 나는 몇 가지 조건에 따라 특정 파일을 읽기위한 명령 행 인수를주고 싶다 :
- 사용자는 ABC 오류 메시지를 제공합니다.
- 사용자가 ABC1을 제공하면 ABC1.csv, ABC1_1.csv 및 ABC1_2.csv 만 읽어야합니다.
- 사용자가 ABC11을 제공하면 ABC11.csv, ABC11_1.csv, ABC11_2.csv, ABC11_3.csv 만 읽어야합니다.
- 사용자가 ABC13을 제공하면 ABC13_1.csv, ABC13_4.csv 만 읽어야합니다.
- 사용자가 ABC17을 제공하면 ABC17_2.csv, ABC17_4.csv, ABC17_6.csv, ABC17_8.csv 만 읽어야합니다.
이 내용에 대해서는 스크립트를 만들었지 만 문제는 직면하고 있습니다.
프로그램 -
from glob import glob
import os
import sys
file_pattern = ''
files_list = list()
arguments = {'ABC', 'PQR', 'XYZ'}
if len(sys.argv[1:2]) is 1:
file_pattern = str(sys.argv[1:2])
else:
print 'run as <python test.py ABC>'
sys.exit(1)
if file_pattern in arguments:
print '<Provide Name with some Number>'
sys.exit(1)
file_pattern = file_pattern.replace('[','').replace(']','').replace('\'','')
if file_pattern.startswith('ABC',0,3):
files_list = glob(os.path.join('<directory name>', str(file_pattern)+'_*.csv'))
else:
print 'No Such File --> ' + str(file_pattern)+ '\t <Provide appropriate Name>'
sys.exit(1)
if files_list:
for a_file in sorted(files_list):
print a_file
#process file
else:
print 'No Such File --> ' + str(file_pattern)+ '\t <Provide appropriate Name>'
sys.exit(1)
이 코드는 잘 작동하지만, 제 2 조건을 만족하지 않습니다. 사용자가 ABC1을 인수, 즉 python test.py ABC1로 제공하면 ABC1_1.csv, ABC1_2.csv 파일이 반환되지만 ABC1.csv 파일은 반환되지 않습니다.
다른 조건을 잃지 않고이 두 번째 조건을 어떻게 충족시킬 수 있습니까?
내가 말하고 싶지만 그 전화처럼 test.py ABC1은 예상대로 ABC11.csv가 아니라 ABC1 _ *. csv를 반환합니다. 그러나 질문 텍스트와 달리 ABC1.csv를 반환하지 않습니다. 예제 코드의 버전이 질문에 맞습니까? –
@Jesper Freesbug- 예 오른쪽 ... (_)을 제거하면 ABC1.csv, ABC11.csv, ABC11_1.csv 및 ABC1로 시작하는 모든 항목이 반환됩니다. 그러나 내가 원하는 것은 명확하게 문제에 대해 설명해주십시오. 가지고 있다면 제안하십시오. – kit