FileNotFoundError WinError3 Python .exe程序未将双反斜杠更改为斜杠

时间:2020-03-06 21:53:58

标签: windows selenium path python-3.6

我正在Python 3.6和Selenium 3.141.0上使用Selenium进行网络抓取。 我需要安装WebDriver才能开始网络抓取,因此我在Word2Vec的自定义目录中手动安装了ChromeDriver(scikit-learn给出了ChromeDriverManager(),当我尝试使用它时) 。在下载目录和创建文件夹之前,程序将验证目录是否已存在以及驱动程序是否在其中。另外,它将当前ChromeDriver目录添加到PATH变量。

执行该操作的程序代码为:

JSONDecodeError

当我在机器上运行它时,它运行得很好。但是当我在其他计算机上测试它时,会出现以下错误:

C:\Users\<username>\ChromeDriver

我对这些行进行了很多更改(此处引用的第一行是命令提示符向我显示的行):

if(browser == "Chrome"):

        pathString = "C:\\Users\\"
        user = str(os.getlogin())
        pathString += user
        pathString += "\\ChromeDriver"

        pathP = Path(pathString)

        a = 0
        print("Verifying directory...")
        try:
            for file in os.listdir(pathP):
                if file.endswith("driver.exe"):
                    a = 1
                    print("Driver found.")
        except Exception:
            os.mkdir(pathP)
            print("Created directory " + str(pathP) + " to ChromeDriver.")

        if a == 0:

            print("Downloading ChromeDriver.")
            r = requests.get(r"https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip")
            print("ChromeDriver downloaded.")
            z = zipfile36.ZipFile(io.BytesIO(r.content))
            z.extractall(path=pathString)
            print("ChromeDriver extracted.")
            z.__del__()
            z.close()
            os.environ["PATH"] += os.pathsep + pathString
            print("Added ChromeDriver path to PATH variable.")

        pathString += "\\chromedriver.exe"
        pathP = Path(pathString)

        driver = webdriver.Chrome(executable_path=pathP)
        return driver

将反斜杠更改为其ASCII值并添加到字符串(通过FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\<username>\\ChromeDriver' ),通过 pathString = "C:\\Users\\" user = str(os.getlogin()) pathString += user pathString += "\\ChromeDriver" 将字符串转换为ASCII编码,将字符串转换为chr()对象,将反斜杠更改为普通斜杠,因为Python会即时修复它,依此类推。

我无法使用pathString.encode(),因为我仍然不知道如何使用它。为什么一个人的Windows不处理双反斜杠而我的却处理呢?以及如何解决?

0 个答案:

没有答案