草庐IT

output_len

全部标签

python - 如何在不修改类的情况下使 len() 在类的不同实例上使用不同的方法?

有没有办法让len()在不修改类的情况下使用实例方法?我的问题示例:>>>classA(object):...pass...>>>a=A()>>>a.__len__=lambda:2>>>a.__len__()2>>>len(a)Traceback(mostrecentcalllast):File"",line1,inTypeError:objectoftype'A'hasnolen()注意:A的不同实例将附加不同的__len__方法我无法更改类A 最佳答案 没有。Python总是通过对象的类查找特殊方法。这有几个很好的理由,一个是

python - 在 subprocess.check_output() 中抑制 stderr

我正在尝试寻找一种方法来忽略标准错误流(类似于2>/dev/null):output=subprocess.check_output("netstat-nptl".split())我应该在上面的命令中添加什么来实现这一点? 最佳答案 只需告诉subprocess为您重定向它:importsubprocessoutput=subprocess.check_output("netstat-nptl".split(),stderr=subprocess.DEVNULL)对于python2,它有点冗长。importosimportsubpr

python - 使用 len() 和 def __len__(self) : to build a class

只是好奇,在构建类时使用len()或def__len__()有什么区别(优点和缺点)?哪种Python风格最好?classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)self.len=len(obs)或classfoo(object):def__init__(self,obs=[])self.data=obsself.max=max(obs)self.min=min(obs)def__len__(self):returnlen(self.data)

Python Pandas : output dataframe to csv with integers

我有一个希望导出到CSV文件的pandas.DataFrame。但是,pandas似乎将一些值写为float而不是int类型。我找不到如何改变这种行为。构建数据框:df=pandas.DataFrame(columns=['a','b','c','d'],index=['x','y','z'],dtype=int)x=pandas.Series([10,10,10],index=['a','b','d'],dtype=int)y=pandas.Series([1,5,2,3],index=['a','b','c','d'],dtype=int)z=pandas.Series([1,2,

python - 'map' 类型的对象在 Python 3 中没有 len()

我在使用Python3时遇到问题。我获得了Python2.7代码,目前我正在尝试更新它。我得到了错误:TypeError:objectoftype'map'hasnolen()在这部分:str(len(seed_candidates))在我这样初始化它之前:seed_candidates=map(modify_word,wordlist)那么,谁能解释一下我必须做什么?(编辑:以前这个代码示例是错误的,因为它使用set而不是map。现在已经更新。) 最佳答案 在Python3中,map返回一个map对象而不是list:>>>L=ma

python - 将数据传递给 subprocess.check_output

我想调用一个脚本,将字符串的内容传送到它的标准输入并检索它的标准输出。我不想接触真正的文件系统,所以我不能为它创建真正的临时文件。使用subprocess.check_output我可以得到脚本所写的任何内容;我怎样才能把输入字符串放到它的标准输入中呢?subprocess.check_output([script_name,"-"],stdin="thisissomeinput")Traceback(mostrecentcalllast):File"",line1,inFile"/usr/lib/python2.7/subprocess.py",line537,incheck_out

Python argparse : Lots of choices results in ugly help output

我有这段代码,我通常很满意:importargparseservers=["ApaServer","BananServer","GulServer","SolServer","RymdServer","SkeppServer","HavsServer","PiratServer","SvartServer","NattServer","SovServer"]parser=argparse.ArgumentParser(description="Aprogramtoupdatecomponentsonservers.")group=parser.add_mutually_exclusiv

python - 为什么 Pandas 内连接会给出 ValueError : len(left_on) must equal the number of levels in the index of "right"?

我正在尝试将DataFrameA内部连接到DataFrameB并遇到错误。这是我的加入声明:merged=DataFrameA.join(DataFrameB,on=['Code','Date'])这是错误:ValueError:len(left_on)mustequalthenumberoflevelsintheindexof"right"我不确定列顺序是否重要(它们不是真正“有序”的吗?),但以防万一,DataFrame的组织方式如下:DataFrameA:Code,Date,ColA,ColB,ColC,...,ColG,ColH(shape:80514,8-noindex)Da

python - PyDev 单元测试 : How to capture text logged to a logging. 记录器在 "Captured Output"

我正在使用PyDev对我的Python应用程序进行开发和单元测试。至于单元测试,除了没有内容被记录到日志框架之外,一切都很好。PyDev的“捕获的输出”没有捕获记录器。我已经将记录的所有内容转发到标准输出,如下所示:importsyslogger=logging.getLogger()logger.level=logging.DEBUGlogger.addHandler(logging.StreamHandler(sys.stdout))尽管如此,“捕获的输出”不显示记录到记录器的内容。这是一个单元测试脚本示例:test.pyimportsysimportunittestimportl

python - 是否需要范围(len(a))?

人们经常在关于SO的python问题中找到这种类型的表达式。要么只是访问可迭代的所有项目foriinrange(len(a)):print(a[i])这只是一种笨拙的写法:foreina:print(e)或分配给可迭代的元素:foriinrange(len(a)):a[i]=a[i]*2应与以下内容相同:fori,einenumerate(a):a[i]=e*2#Orifitisn'ttooexpensivetocreateanewiterablea=[e*2foreina]或用于过滤索引:foriinrange(len(a)):ifi%2==1:continueprint(a[i])