为什么解释器中的Python3生成器最后返回None List?

时间:2019-11-09 14:25:15

标签: python-3.x windows-10 generator list-comprehension python-interactive

首先,我像3年前一样捡起了python,我很喜欢它。当我在IDE中键入代码时,我通常只采用简单的方法并测试代码。但是最近,我一直在使用交互式控制台来测试“想法”的摘要,并且键入它很烦人,因为我一直在使用生成器,并且对None元素的列表感到困惑,只要最后生成的元素数。

为此,我使用这段代码来传递有关某些应用程序的一些信息

data_stream = run('powershell -Command " & {ps -Id %s | select MainWindowHandle, name, id, '
                                                           'mainwindowhandle, startime}"'%_proc,
                                                            bufsize=0, stdout=PIPE, stderr=PIPE,
                                                        universal_newlines=0, shell=True).stdout.decode('utf-8').split('\r\n')[2:-4]

# Yes, I know the risk that involves using shell=True

这将返回这样的列表(这是我要打印的方式)

['Name             : _procexe',
 'Id               : 1313',
 'MainWindowTitle  : PROCIMPORTANT SOMEDATE', 
 'MainWindowHandle : 666666',
 'StartTime        : 01-01-1971 01:16:25']

现在要打印它,我使用此命令

[print(x) for x in data_stream]

这出来

>>> [print(x) for x in data_stream]
Name             : _procexe
Id               : 1313
MainWindowTitle  : PROCIMPORTANT SOMEDATE
MainWindowHandle : 666666
StartTime        : 01-01-1971 01:16:25
[None, None, None, None, None]

我通常检查None元素,这些元素不应存在,是否需要存在,因此在脚本中我没有注意到它。

这让我感到困惑,为什么会在末尾附加这样的列表。

我也尝试过用英语和西班牙语进行谷歌搜索,这样做确实很奇怪,因为我问其他主题的各种方式不断出现。

0 个答案:

没有答案