相关疑难解决方法(0)

如何使用for循环而不是while循环遍历Python Queue.Queue?

通常我们这样编码:

while True:
    job = queue.get()
    ...
Run Code Online (Sandbox Code Playgroud)

但它是否也可以做以下事情:

for job in queue.get():
    #do stuff to job
Run Code Online (Sandbox Code Playgroud)

我想要这样做的真正原因是因为我想使用python-progressbar的自动检测maxval.他们这样做for this in progressbar(that):

python

24
推荐指数
4
解决办法
4万
查看次数

iter(可调用,哨兵)的用途是什么?

所以,我正在观看Raymond Hettinger的演讲,将代码转换为美丽的,惯用的Python,并且他提出了iter我从未意识到的这种形式.他的例子如下:

代替:

blocks = []
while True:
    block = f.read(32)
    if block == '':
        break
    blocks.append(block)
Run Code Online (Sandbox Code Playgroud)

使用:

blocks = []
read_block = partial(f.read, 32)
for block in iter(read_block, ''):
    blocks.append(block)
Run Code Online (Sandbox Code Playgroud)

检查完文档iter,我发现了一个类似的例子:

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)
Run Code Online (Sandbox Code Playgroud)

这看起来对我很有用,但我想知道你是否Pythonistas知道这个构造的任何不涉及I/O读取循环的例子?也许在标准库中?

我可以想到非常人为的例子,如下所示:

>>> def f():
...     f.count += 1
...     return f.count
... 
>>> f.count = 0
>>> list(iter(f,20))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …
Run Code Online (Sandbox Code Playgroud)

python

17
推荐指数
3
解决办法
3571
查看次数

如何从python中的文件一次读取一个字符?

我想从一个文件中读取一个数字列表,一次只能查询一个字符,以检查该字符是什么,无论是数字,句号,+或 - ,e还是E,还是其他一些字符. ..然后根据它执行我想要的任何操作.如何使用我已有的现有代码执行此操作?这是我尝试过的一个例子,但没有用.我是python的新手.提前致谢!

    import sys

    def is_float(n):
        state = 0
        src = ""
        ch = n
        if state == 0:
            if ch.isdigit():
                src += ch
                state = 1
                ...

    f = open("file.data", 'r')
    for n in f:
        sys.stdout.write("%12.8e\n" % is_float(n))
Run Code Online (Sandbox Code Playgroud)

python floating-point file

9
推荐指数
2
解决办法
3222
查看次数

标签 统计

python ×3

file ×1

floating-point ×1