while True: title='New Connection' wid_new = subprocess.check_output(['xdotool', 'search', '--sync', '--name', title]) #wid_new = wait('New Connection',560) print("3") if len(wid_new)>2: print(wid_new) break为什么只输出一个元素
时间: 2024-03-12 10:43:40 浏览: 18
根据你提供的代码,`wid_new`是通过`subprocess.check_output()`函数获取的,该函数返回的是一个字节串(bytes),而不是一个列表。
因此,`len(wid_new)`的结果是字节串的长度,而不是元素的数量。如果你想获取元素数量,应该先将字节串转换为字符串,然后再使用字符串的分割方法(如`split()`)进行分割。
例如,你可以使用以下代码来获取窗口ID列表:
```
wid_new = subprocess.check_output(['xdotool', 'search', '--sync', '--name', title]).decode().split()
```
这里,`decode()`方法将字节串转换为字符串,然后使用`split()`方法将字符串按照空格分割成一个列表。这样就可以获取窗口ID列表了。
相关问题
while True: title='New Connection' wid = subprocess.check_output(['xdotool', 'search', '--sync', '--name', title]) #wid_new = wait('New Connection',560) print("4") if len(wid_new)>1: print(wid_new) break
这段代码的功能是,在一个无限循环中,先将变量 title 赋值为字符串 "New Connection",然后通过运行命令行命令 `xdotool search --sync --name New Connection` 获取与窗口名称为 "New Connection" 相关联的窗口 ID,并将其存储在变量 wid 中。接下来,打印字符串 "4"。然后,如果变量 wid_new 中的元素数量大于1,则打印出变量 wid_new 的值,并且跳出循环。如果变量 wid_new 中的元素数量不大于1,则不执行任何操作。注意,此处变量 wid_new 并未在代码中被定义或赋值,可能存在问题。
wid_newone_bytes = subprocess.check_output(['xdotool', 'search', '--name', '"New Connection"'])有两个id,怎么输出这两个id
如果 `xdotool` 命令找到了多个窗口,并且你想要输出所有的窗口 ID,你可以使用 `subprocess.check_output` 函数接收输出结果,然后使用 `splitlines()` 函数将输出结果按行分割成一个字符串列表。然后你可以遍历该列表,并将每行字符串转换为整数类型的窗口 ID。例如:
```
import subprocess
wid_bytes = subprocess.check_output(['xdotool', 'search', '--name', '"New Connection"'])
wid_str = wid_bytes.decode('utf-8').strip()
wid_list = wid_str.splitlines()
wid_ids = [int(wid) for wid in wid_list]
print(wid_ids)
```
这将输出一个窗口 ID 列表。如果 `xdotool` 命令找到了多个窗口,那么该列表将包含多个元素,每个元素都是一个整数类型的窗口 ID。