2014-02-11 3 views
0

У меня есть CSV-файл, как это:CSV учетного питон один лайнер

name,username 
name2,username2 
etc... 

И мне нужно, чтобы извлечь каждую колонку в списки, так что я могу создать учетную запись (администратора сценарий).
Я надеюсь, результат будет выглядеть следующим образом:

NAMES=(name name2) 
MAILS=(username username2) 
LENGHT=3 # number of lines in csv files actually 

Я хотел бы сделать это в Python (потому что я использую его в другом месте в моем сценарии и хотел бы преобразовать мои коллег и темную сторону). Зависит, что я на самом деле не пользователь питон ...
Что-то, как это будет делать трюк (я предполагаю):

NAMES=($(echo "$csv" | pythonFooMagic)) 
MAILS=($(echo "$csv" | python -c "import sys,csv; pythonFooMagic2")) 
LENGHT=$(echo "$csv" | pythonFooMagic3) 

я вроде нашел TUTOS сделать это accross несколько строк, но склеено это некрасиво ,
Должно быть несколько интересных способов сделать это. Else, я уйду в отставку, чтобы использовать sed ... Любые идеи?

EDIT: ОК плохая идея, на будущее, увидеть комментарии

+6

Использование другого языка сценариев для создания * отдельные переменные * оболочки ISN» t точно эффективный или простой. Почему бы просто не использовать Python для работы * целиком и вообще отказаться от оболочки? –

+0

Да, я понимаю это, но я ограничился bash как обязательным условием. Я мог бы использовать cut и tail для извлечения csv, но это не весело. – tastadmoon

+0

Использование другого инструмента может быть не очень забавным, но сделать Python три раза (не совсем легкий процесс) только по какой-то веской причине еще хуже. Либо придерживайтесь стандартных инструментов командной строки или полностью для Python. Это сказало ... –

ответ

0

Вы можете использовать временный файл, как этот:

tmpfile=$(mktemp) 
# Python script produces the variables you want 
pythonFooMagic <csv> $tmpfile 
# Here you take the variables somehow. For example... 
source $tempfile 
rm $tmpfile 
Смежные вопросы