2015-11-23 3 views
2

У меня есть несколько функций, которые я должен выполнить. Обе функции, которые я запускал индивидуально, просто прекрасны, однако, когда я пытаюсь запустить их одновременно, выполняется только первая функция.Как вызвать несколько функций с помощью файла в python

#Read file Emma.txt 
fin = open('Emma.txt', 'r') 


''' 
Write a function wordNumbers which takes the file name and return 
number of words in the file 
''' 

def wordNumbers(fin): 

    #count the number of words. 
    num_words = 0 #staring point for line 
    for line in fin: 
      words = line.split() #create a list of line 
      num_words += len(words) #add each line legnth together 
    print num_words #print total number of words 

def lineNumbers(fin): 

    #count the number of lines with a counter and while loop 
    cnt = 0 
    for line in fin: 
      if cnt < line: 
        cnt += 1 
    print cnt 

wordNumbers(fin) 

lineNumbers(fin) 

ответ

1

После первого вызова вы исчерпали ввод. Чтобы сделать то, что вы хотите, вам нужно вернуться к началу до второго вызова. Просто добавьте искать вызов между двумя следующими:

wordNumbers(fin) 
fin.seek(0) 
lineNumbers(fin) 
2

Вы должны перейти в начало файла

wordNumbers(fin) 
fin.seek(0) # move to the beginning 
lineNumbers(fin) 

или возобновлять файл

fin = open('Emma.txt', 'r') 
wordNumbers(fin) 
fin.close() 

fin = open('Emma.txt', 'r') 
lineNumbers(fin) 
fin.close() 
1

Проблема заключается в том, когда вы открываете файл и начать читать с него, ваша позиция в файле не будет сбрасываться, пока вы ее не закроете. fin = open('Emma.txt', 'r') открывает файл, а затем вы используете две функции для чтения из файла, в то время как вы должны закрыть его (или искать в начале с помощью fin.seek(0)) после первого вызова функции и снова открыть его, чтобы снова прочитать файл с самого начала.

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