2013-07-22 5 views
1

Я пытаюсь отладить, что пошло не так в моем коде. Мой file.txt содержит 1763 строки, но когда я запускаю его, он всегда заканчивается. Всегда останавливается где-то 1680 и выше (напечатано row в моем коде); дело в том, что он останавливается в разных строках каждый раз, когда я запускаю его, поэтому я не думаю, что проблема связана с моим текстовым файлом.Не заполнено файл

row = 0 
for line in io.lines("file.txt") do 
    row = row+1 
    local new_row1 = {} 
    for n in line:gmatch'%S+' do 
    table.insert(new_row1, tonumber(n)) 
    end 
    if #new_row1 > 0 then 
    table.insert(input, new_row1) 
    end 
    print(row) 
end 

В коде есть что-то неправильное?

+0

Программа заканчивается без ошибок? –

+0

@EgorSkriptunoff Yup. Нет ошибки. – Rachelle

+0

Добавьте эту строку в конец вашего кода: 'print ('Done', row, #input)'. Он печатает разные цифры каждый раз? –

ответ

2

Похоже, что в вашем коде вы открыли дескриптор файла «file.txt» в начале вашего скрипта, и он остается открытым до конца, где вы закрываете файл. В течение этого времени вы пытаетесь снова открыть файл «file.txt» в своем цикле, который вызывает странное поведение, которое вы видите.

Когда я переехал ваш файл открывать и закрывать области в среднюю секцию после первого цикла, но до последнего внешнего цикла, который фиксирует проблему:

file = assert(io.open("file.txt", "w")) 
    for i = 1, 1000 do 
     j = math.random(i, row-one) 
     u[i], u[j] = u[j], u[i] 
     for k = 1, 11 do 
     file:write(input2[u[i]][k], " ") 
     end 
     file:write"\n" 
    end 
    num = (row-one)+1 
    for i = 1, one do 
    for k=1, 11 do 
     file:write(input2[num][k], " ") --writes to the file all the rows starting from where '1' in column11 was seen 
    end 
    file:write("\n") 
    num = num + 1 
    end 
file:close() 
-----------------------------------Access file.txt.-------------------------- 
-- ... 

Это дает ожидаемый результат:

Done 1762 1762 
-------------------------- 
Смежные вопросы