Найти - Пользователи
Полная версия: Проблема с чтением из файла
Начало » Python для новичков » Проблема с чтением из файла
1 2
odnochlen
Ты все-таки проверь. Комадну я дал.
Mozart
odnochlen - http://gyazo.com/4d4d2fcac8b4e539a2b2ad30b07bd8f2
py.user.next
>>> n = 0
>>> with open('/etc/passwd') as fin:
...   for line in fin:
...     n += 1
... 
>>> n
38
>>>
это пример, как посчитать строки файла, не загружая его весь в память

скорее всего, файл просто не соответствует ожиданиям, так как другие файлы читаются нормально и при чтении этого файла не возникает ошибок
shoik
Mozart
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)Вот 1 из примеров кода:
У меня была такая же проблема пока в конце не указал закрытие файла.
f = open('my_file', 'w')
f.write('Hello, ')
f.write('World!')
 f.close() # объязательно указать

Модератор: Обязательно пользоваться кнопкой КОД
shoik
Mozart
Есть файл, в нем 8 миллионов записей, проблема в том, что ни file.read() ни file.readlines() не позволяют мне прочитать из файла большее 1 090 000 строк (т.е. в 8 раз меньше)Вот 1 из примеров кода:
input_file = open('msde.log', 'r')
output_file = open('output.log', 'w')
download_line = [] #create masiv
 #postrochno zapisivaem v pamiat'
kk = 0
for line in input_file:
    download_line.append(line)
    kk += 1
# zapis v file
n = 0
for line in download_line: 
    output_file.write(line) 
    n += 1
k = input_file.readline()
print 'in --', len(k), 'in --', kk, 'out --', n
input_file.close()
output_file.close()

Результат:
>>>
in – 0 in – 8337 out – 8337

Правда теперь у меня вопрос:
- по какой причине подсчетом len(k) результат пишет “0” ?

Модератор: Обязательно пользоваться кнопкой КОД
shoik
shoik
Я понял. что так делать нельзя но не почему объясните пожалуйста.
А вот так работает
input_file = open('msde.log', 'r')
output_file = open('output.log', 'w')
download_line = []
k = input_file.readlines()
kk = 0
for line in k:
    download_line.append(line)
    kk += 1
    
n = 0
for line in download_line:
    output_file.write(line)
    n += 1
print 'in --', len(k), "in --", kk, 'out --', n
input_file.close()
output_file.close()

Результат:
in – 8337 in – 8337 out – 8337

Модератор: Обязательно пользоваться кнопкой КОД
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB