相关疑难解决方法(0)

如何在Python中打印到stderr?

有几种方法可以写入stderr:

# Note: this first one does not work in Python 3
print >> sys.stderr, "spam"

sys.stderr.write("spam\n")

os.write(2, b"spam\n")

from __future__ import print_function
print("spam", file=sys.stderr)
Run Code Online (Sandbox Code Playgroud)

这似乎与Python#13 †的禅宗相矛盾,那么这里有什么区别,这种方式有哪些优点或缺点?应该使用哪种方式?

应该有一个 - 最好只有一个 - 显而易见的方法.

python printing stderr zen-of-python

1246
推荐指数
13
解决办法
77万
查看次数

Python logging.info()不记录消息

parser_logger = logging.getLogger("CSHEL_parserlogger");
#logging.basicConfig()
parser_logger.addHandler(RotatingFileHandler(
                            "logfile", mode='a', maxBytes=7340032, backupCount=4,
                            encoding=None, delay=False))

#d = { 'clientip' : '192.168.0.1', 'user' : 'fbloggs' }
parser_logger.info('Protocol problem: %s', 'connection reset')
Run Code Online (Sandbox Code Playgroud)

这将创建一个名为logfile的文件,但不会向其中写入任何内容.如果我将最后一行更改为

parser_logger.warning('Protocol problem: %s', 'connection reset')
Run Code Online (Sandbox Code Playgroud)

它会将消息正确地记录到"日志文件"中.

我确信这是一件我想念的小事,但我无法弄清楚它是什么.

python logging

15
推荐指数
1
解决办法
2万
查看次数

如何使用python在hadoop流媒体作业中使用文件?

我想从我的hadoop流媒体作业中的文件中读取一个列表.这是我简单的mapper.py:

#!/usr/bin/env python

import sys
import json

def read_file():
    id_list = []
    #read ids from a file
    f = open('../user_ids','r')
    for line in f:
        line = line.strip()
        id_list.append(line)
    return id_list

if __name__ == '__main__':
    id_list = set(read_file())
    # input comes from STDIN (standard input)
    for line in sys.stdin:
        # remove leading and trailing whitespace
        line = line.strip()
        line = json.loads(line)
        user_id = line['user']['id']
        if str(user_id) in id_list:
            print '%s\t%s' % (user_id, line)
Run Code Online (Sandbox Code Playgroud)

这是我的reducer.py

#!/usr/bin/env python

from operator import itemgetter
import …
Run Code Online (Sandbox Code Playgroud)

python hadoop hadoop-streaming

8
推荐指数
1
解决办法
5866
查看次数