2016-05-19 1 views
0

Как открыть три файла, которые имеют такую ​​же последовательность данных внутри, и все эти данные файла должны работать внутри цикла. Этот цикл будет захватывать значения внутри файла. Сначала прочитайте первые данные файла, а затем второй файл, затем третий. Как сделать эту работу в моем существующем коде ...Как открыть три файла в цикле, в python

def memberStatus(): 
inputFile = open('Members.txt', 'r') 
inputFile = open('Members1.txt', 'r') 
inputFile = open('Members2.txt', 'r') 
with inputFile as myFile: 
    for number, line in enumerate(myFile): 
     line=(line.rstrip()).split() 
     rawList=[] 
     rawList.append(line) 
     print("raw list : ", rawList) 
     intLine1 = [str(elem) for elem in rawList] 
     intLine1 = ''.join(intLine1) 
     AgeItem = intLine1[2:4] 
     winLoosItem = intLine1[8:9] 
     logInItem = intLine1[13:16] 
     GenderItem = intLine1[20:26] 
     incomeItem = intLine1[30:33] 

These're три файла, который должен работать внутри «с файл_ввода в Myfile:» петля

  • Members.txt
  • членов1 .txt
  • Members2.txt

ответ

2

С делать это:

inputFile = open('Members.txt', 'r') 
inputFile = open('Members1.txt', 'r') 
inputFile = open('Members2.txt', 'r') 

Вы просто переназначаете имя inputFile в другой файл каждый раз.

Одним из многих возможных способов было бы, например, поместить имена файлов в список и затем перебрать их по списку.

inputFiles = ['Members.txt', 'Members1.txt', 'Members2.txt'] 
for membersFile in inputFiles: 
    myFile = open(membersFile, 'r') 
    # And rest of code goes in here. 
    myFile.close() 

Edit: @SergeBallesta это правильно, что вы, как правило, достаточно использовать with заявление для операций с файлами, как это очень удобно и просто в использовании и в данном примере он хотел бы это:

inputFiles = ['Members.txt', 'Members1.txt', 'Members2.txt'] 
for membersFile in inputFiles: 
    with open(membersFile, 'r') as myFile: 
     # And rest of code goes in here. 

Нужно, пожалуй, самому решить, что для него и его глаз кажется более удобным.

+1

'с открытым (membersFile,«г»), как Myfile:', по крайней мере, обеспечить чистое закрытие каждого файла между пытается обработать следующий ... –

+1

@SergeBallesta Правда, однако все, что вам нужно сделать, это используйте метод 'close' в конце итерации и с помощью оператора' with' вы создаете дополнительный уровень отступа и жертвуете удобочитаемостью imo, на самом деле это не стоит в таком простом случае. –

+0

Thankyou @Peter Nimroot это работа .. и я чувствую, что я настолько глуп, что не заметил этого простого решения. Спасибо – user1641688

2
def memberStatus(): 
    for name in ['Members.txt', 'Members1.txt', 'Members2.txt']: 
    with open(name, 'r') as myFile: 
     # do stuff 
Смежные вопросы