2017-01-04 7 views
0

У меня есть куча строк в качестве входного текстового файла:функция питона стандартный вывод не возвращается ни на последней строке

field1;field2;...fieldn 

, что я, что преобразовать в output.json линии которой являются:

{field_name1:field1,field_name2:field2,...field_namen:fieldn} 

Так что я есть, используя следующий код:

from sys import stdin, stdout 
import json 

def txt_to_json(*args): 
     for line in stdin: 
       fields = [x.strip() for x in line.split(";")] 
       stdout.write(json.dumps(dict(zip(args, fields))) + "\n") 

в оболочке (если input.txt содержит три поля):

python -c "from process_files import *; print txt_to_json('field_name1','field_name2','field_name3')" <input.txt> output.json 

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

Спасибо за помощь

ответ

2

Ваша функция не возвращать None, вы печатаете результат функции, которая затем передается по конвейеру в файл, удалить print() вызов:

python -c "from process_files import *; txt_to_json('field_name1','field_name2','field_name3')" <input.txt> output.json