system()参数1必须是没有空字节的字符串,而不是str

时间:2016-10-11 12:10:03

标签: python windows python-2.7 batch-file

我在Python 2.7和Windows上运行以下Python代码。

代码基本上从我的有效Google Chrome标签中抓取网址,然后运行并将URL作为参数传递给Windows批处理文件。

import os
import win32gui
import win32con

hwnd = win32gui.GetForegroundWindow()

omniboxHwnd = win32gui.FindWindowEx(hwnd, 0, 'Chrome_OmniboxView', None)

def getWindowText(hwnd):
    buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0)
    buf = win32gui.PyMakeBuffer(buf_size)
    win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buf)
    return str(buf)

url = getWindowText(hwnd)

exe = 'run.bat "%s"' %(url)

os.system(exe)

但是,从命令行运行代码会引发以下错误:

TypeError: system() argument 1 must be string without null bytes, not str

我有什么遗漏吗?

编辑:手动输入URL字符串有效,即替换

url = getWindowText(hwnd)

url = "https://stackoverflow.com/questions/39976936/"

有效,所以似乎问题在于代码如何从窗口中获取URL字符串。我从How do I get the URL of the active Google Chrome tab in Windows?获取了代码,我根本不熟悉它。是否有其他方法可以获取URL?

0 个答案:

没有答案