Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > wc -c


Автор: Pseex 2.7.2015, 15:36
Приветствую!

В чем подвох?

Код

In [47]: p = subprocess.Popen("wc -c", shell=True, stdin=subprocess.PIPE)

In [48]: p.communicate("a")
1
Out[48]: (None, None)

In [49]: !echo a | wc -c
2

In [50]: from __future__ import with_statement

In [51]: with open('temp.txt','w') as file:
   ....:     file.write('a')
   ....:     

In [52]: file = open('temp.txt')

In [53]: f = file.read()

In [54]: p = subprocess.Popen("wc -c", shell=True, stdin=subprocess.PIPE)

In [55]: p.communicate(f)
1
Out[55]: (None, None)

In [56]: !wc -c < temp.txt
1


Автор: BSOD 28.7.2015, 22:51
Дело в символе конца строки

echo "a" на самом деле выводит два символа ("a" и конец строки)
file.write() (как и communicate) шлет только "a"

если вдруг актуально smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)