Я пытаюсь читать в файлах для обработки текста.
Идея состоит в том, чтобы запустить их через псевдораспределенную файловую систему Hadoop на моей виртуальной машине, используя код сокращения карт, который я пишу.Интерфейс Ubuntu Linux, я использую Python 2.6 с установкой.Мне нужно использовать sys.stdin
для чтения в файлах и sys.stdout
, поэтому я перехожу от маппера к редуктору.
Вот мой тестовый код для картографа:
#!/usr/bin/env python
import sys
import string
import glob
import os
files = glob.glob(sys.stdin)
for file in files:
with open(file) as infile:
txt = infile.read()
txt = txt.split()
print(txt)
Я не уверен, как glob работает с sys.stdin
, и я получаю следующие ошибки:
Послетестирование с конвейером:
[training@localhost data]$ cat test | ./mapper.py
Я получаю это:
cat: test: Is a directory
Traceback (most recent call last):
File "./mapper.py", line 8, in <module>
files = glob.glob(sys.stdin)
File "/usr/lib64/python2.6/glob.py", line 16, in glob
return list(iglob(pathname))
File "/usr/lib64/python2.6/glob.py", line 24, in iglob
if not has_magic(pathname):
File "/usr/lib64/python2.6/glob.py", line 78, in has_magic
return magic_check.search(s) is not None
TypeError: expected string or buffer
На данный момент я просто пытаюсь прочитать три небольших файла .txt
в одном каталоге.
Спасибо!