我正在尝试读入文件进行文本处理。
这个想法是使用我正在编写的map reduce代码在我的虚拟机上通过hadoop伪分布式文件系统运行它们。接口是ubuntulinux,我是用python2.6运行的安装。我需要使用 sys.stdin
用于读取文件,以及 sys.stdout
所以我从Map器到还原器。
下面是我的Map器测试代码:
# !/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
一个目录中的文件。
谢谢!
2条答案
按热度按时间h79rfbju1#
我仍然不完全理解您期望的输出是什么(列表或纯文本),以下将起作用:
然后执行:
我的建议是通过命令行参数输入目录名,而不是像上面那样通过stdin。
如果你想调整输出的格式,请让我知道。希望这有帮助。
332nm8kg2#
files=os.listdir(路径)
使用此选项列出所有文件,然后应用循环。