2016-10-17 3 views
-1

У меня довольно простой скрипт python (3.5.2), который читается из файла, и если строка соответствует определенным критериям, то она копирует строку в другую. Исходный файл выглядит следующим образом (это одна строка, многие другие следуют, в том же формате, но разных номеров):Питон записывается в терминал без видимых причин?

2,9133 1 1 157,6578 170,4160 0,7081 3044,911 351,998 152.778 162.109 -1451.315

И мой сценарий выглядит следующим образом:

inp = open("original.dat", "r") 

out = open("new.log", "w") 

for line in inp: 

    if float(line.split()[5]) < 5.0: 

     out.write(line) 

Программа отлично завершает задачу, я получаю желаемый результат. Тем не менее, при запуске из окна терминала python он спамает мой терминал целыми числами около 80 (например, 70-90), казалось бы, случайным образом.

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

+3

Это было бы нормально, если вы запускали этот код в интерактивном режиме, но не в пределах скрипт. Как вы запускаете этот код? – user2357112

+0

при запуске 'out.write (line)' from terminal, вы получите количество написанных символов. Значения соответствуют (80 символов типичны для одной строки) –

ответ

1

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

>>> a = open("new.txt", 'w') 
>>> a.write("hello") 
5 

Там, наверное, более элегантное решение, но вы могли бы подавить это, установив переменную на выходе out.write

foo = out.write(line) 
+0

'with' не изменит ничего из этого. Печать значений операторов выражения является нормальной в интерактивном режиме, но не в скрипте. Вопросник должен запускать код странным образом. – user2357112

+0

Да, отредактировал мой ответ: S @ user2357112 – sytech

+0

Хм, я бы никогда об этом не думал. Большое спасибо за вашу помощь – Ezze

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