python运行不了、显示警告_Python xlrd:禁止显示警告消息

查看xlrd docs的相关部分。open_workbook函数的第二个参数是logfile,它应该是一个打开的文件对象或类似的操作。它只需要支持一个write方法。它默认为sys.stdout。

所以,像这样的东西(未经测试)应该可以完成这项工作:class MyFilter(object):

def __init__(self, mylogfile=sys.stdout):

self.f = mylogfile

def write(self, data):

if "WARNING *** OLE2 inconsistency" not in data:

self.f.write(data)

#start up

log = open("the_log_file.txt", "w")

log_filter = MyFilter(log)

book = xlrd.open_workbook("foo.xls", logfile=log_filter)

# shut down

log.close()

# or use a "with" statement

更新以回应@DaniloBargen的回答:

单独编写换行符的不是xlrd,而是Pythonprint语句/函数。此脚本:class FakeFile(object):

def write(self, data):

print repr(data)

ff = FakeFile()

for x in "foo bar baz".split():

print >> ff, x

为所有Python2.2到2.7(包括2.2和2.7)生成此输出:'foo'

'\n'

'bar'

'\n'

'baz'

'\n'

适当的现代化脚本(作为函数而不是语句打印)为2.6、2.7、3.1、3.2和3.3生成相同的输出。你可以用一个更复杂的过滤器类来解决这个问题。以下示例还允许检查短语序列:import sys, glob, xlrd

class MyFilter(object):

def __init__(self, mylogfile=sys.stdout, skip_list=()):

self.f = mylogfile

self.state = 0

self.skip_list = skip_list

def write(self, data):

if self.state == 0:

found = any(x in data for x in self.skip_list)

if not found:

self.f.write(data)

return

if data[-1] != '\n':

self.state = 1

else:

if data != '\n':

self.f.write(data)

self.state = 0

logf = open("the_log_file.txt", "w")

skip_these = (

"WARNING *** OLE2 inconsistency",

)

try:

log_filter = MyFilter(logf, skip_these)

for fname in glob.glob(sys.argv[1]):

logf.write("=== %s ===\n" % fname)

book = xlrd.open_workbook(fname, logfile=log_filter)

finally:

logf.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值