gpt4 book ai didi

Python len() 不返回整数

转载 作者:行者123 更新时间:2023-12-01 02:45:48 25 4
gpt4 key购买 nike

我目前正在修改在 Github 上找到的一些代码。它适用于使用基于 ath9k 的无线卡的频谱分析仪。

无论如何,问题出在这一段代码上:

sdata = struct.unpack_from("56B", data, pos)
pos += 56

# calculate power in dBm
sumsq_sample = 0
samples = []
for raw_sample in sdata:
if raw_sample == 0:
sample = 1
else:
sample = raw_sample << max_exp
sumsq_sample += sample*sample
samples.append(sample)

print (len(samples))

我希望最后一个打印语句始终产生值“56”,但是我遇到了一些奇怪的行为。以下是一些示例输出:

56
56
56
56
56
56
56S 15.952354
56
56
56
56
56
56
56
56
56
56
56
56
56S 15.689883
56
56S 16.510071
56
56S 17.591084
56S 18.358299
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56
56

这对我来说毫无意义。我已经检查了 len() 和 struct.unpack_from() 的文档,但没有得到任何结果。样本应包含 56 个单字节整数,但有时我会得到奇怪的值,例如“56S 10.237633”

我正在修改的项目的 Github 存储库可以在 https://github.com/bcopeland/speccy 找到上面的代码示例来自于spectrum_file.py,从第87行开始

有什么想法吗?谢谢

最佳答案

正如 @kchomski 所提到的,您的问题是由于程序的另一部分写入 stderr 造成的。 .

我在 speccy.py 中找到了以下代码行,我认为这导致了意外的输出:

sys.stderr.write('FPS %f \r' % (sum(self.fps) / len(self.fps)))

MVCE将是以下内容:

import sys

sys.stderr.write('TOSTDERR\r')
print('54')

输出:

54STDERR

回车符\r正在将光标移回行首,然后将 54打印在之前写入 stderr 的内容之上.

您可以通过切换 \r 来解决该问题至\n这将在输出的末尾添加一个新行 stderr并避免这个覆盖问题。

关于Python len() 不返回整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45270788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com