2016-07-28 3 views
0

Я хочу прочитать все файлы в одном каталоге. Каталог содержит следующие файлы:Python: Как читать все файлы в каталоге с определенным условием?

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 

Когда я бегу мой сценарий, я хочу дать это имя файла на консоли в формате, как: ABC11.

После этого я хочу прочитать все файлы только с расширениями ABC11 в отсортированном порядке. то есть сначала ABC11_1.csv, ABC11_2.csv, ABC11_3.csv, как это.

Если пользователь дает только приложение ABC, оно должно предоставить сообщение об ошибке. Если пользователь дает только ABC1, то действительное приложение принимает это и проверяет в каталоге файлы с расширением ABC1, если они доступны, тогда обрабатывайте файлы в отсортированном порядке, если нет, то сообщение об ошибке.

Программа-код-

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 LineName 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) 

Я делаю так, и это работа хорошо для меня, но это то, что другие лучшие способы сделать этот материал. Пожалуйста, предоставьте все ваши ответы?

Спасибо.

ответ

-1

По вашему вопросу, следующий псевдокод должен работать

import os 

# Read all files from a directory, and read your input argument 
files = os.listdir("your_input_directory_path") 
input_argument = "ABC11" 

# Sort file names by name 
files = sorted(files) 

relevant_files = [] 
for file_name in files: 
    # Your Conditions goes here ........ 

    if file_name.startswith(input_argument): 
     relevant_files.append(file_name) 



if relevant_files: 
    return "Error | Not Found" 
else: 
    return relevant_files 
+0

@ userxxx- ли он выполнять все мои требования, которые я представил в этом вопросе? – kit

+0

Да, попробуйте запустить этот код .. возможны некоторые незначительные изменения в соответствии с вашими требованиями. Но я думаю, это будет работать в соответствии с тем, что вы упомянули в своем вопросе. – userxxx

+0

@ userxxx- Если пользователь дает аргумент ABC1, он должен проверять только файл ABC1_ (whaterver). Он не должен возвращать файл ABC11_1.csv. – kit

Смежные вопросы