wid_newone=os.system(['xdotool search --name "New Connection"'])报错TypeError: must be string, not list
时间: 2024-03-09 08:48:05 浏览: 20
`os.system` 函数需要传递一个字符串作为命令,但是你传递了一个列表作为参数。要解决这个问题,你需要将列表转换为字符串。你可以使用 `join()` 函数将列表中的元素连接成一个字符串,然后将该字符串传递给 `os.system` 函数。例如:
```
wid_newone = os.system(' '.join(['xdotool', 'search', '--name', '"New Connection"']))
```
这将把列表 `['xdotool', 'search', '--name', '"New Connection"']` 转换成字符串 `'xdotool search --name "New Connection"'`,然后将其传递给 `os.system` 函数。
相关问题
wid = os.popen(['xdotool', 'search', '--sync', '--name', title]).read().strip() TypeError: must be string, not list原因
该错误是因为`os.popen()`函数的参数是一个字符串类型的命令,而你传入的是一个列表类型的命令。你需要将命令转换为字符串类型,可以使用`join()`方法将列表类型的命令转换为字符串类型。例如:
```
cmd = ' '.join(['xdotool', 'search', '--sync', '--name', title])
wid = os.popen(cmd).read().strip()
```
这样就能够将命令转换为字符串类型,并且避免了`TypeError`错误。
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。