2016-10-04 4 views
0

Я застрял с моим скриптом в точке. Сценарий этотPython скрипт для проверки dir не работает

import subprocess 
import os 
def Windows(): 
    SW_MINIMIZE = 6 
    info = subprocess.STARTUPINFO() 
    info.dwFlags = subprocess.STARTF_USESHOWWINDOW 
    info.wShowWindow = SW_MINIMIZE 
    print(os.path.isdir("C:\Program Files (x86)")) 
    while True: 
     try: 
      subprocess.Popen(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe', startupinfo=info) 
     except WindowsError: 
      subprocess.Popen(r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', startupinfo=info) 
    else: 
     try: 
      subprocess.Popen(r'C:\Program Files\Mozilla Firefox\firefox.exe', startupinfo=info) 
     except WindowsError: 
      subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe', startupinfo=info) 

То, что я хочу сделать, это проверить, если компьютер 64 бит или 32 бит (как я хочу, чтобы открыть браузер без окна с помощью subprocess.), Чтобы найти браузеры chrome или firefox, в зависимости от того, какой пользователь имеет (я предполагаю, что у них есть один из них). Поскольку путь для chrome и firefox варьируется в 64-х и 32-разрядных компьютерах (Program Files и Program Files (x84)), я придумал этот скрипт, который определяет, существует ли папка x86 или нет. Если это так, оно продолжается в папке для поиска браузеров. Однако, если это не так, предполагается, что он 32-разрядный и ищет папку Program Files, и в этой папке он ищет браузеры. Однако, когда я бегу сценарий, я получаю эту ошибку

Traceback (most recent call last): 
    File "C:\Users\Charchit\Desktop\via.py", line 29, in <module> 
    Windows() 
    File "C:\Users\Charchit\Desktop\via.py", line 13, in Windows 
    subprocess.Popen(r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', startupinfo=info) 
    File "C:\Python27\lib\subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "C:\Python27\lib\subprocess.py", line 958, in _execute_child 
    startupinfo) 
WindowsError: [Error 2] The system cannot find the file specified 

Однако, в моем сценарии он не должен даже пойти while True раздел, потому что у меня есть 32 битная система и x86 папка не существует!

+0

@cxw Что? Я не получил его –

+0

Ну, существует ли '' C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe''? –

+0

@MorganThrapp Нет, этого не существует, потому что у меня 32-разрядное устройство –

ответ

1

Вы на самом деле не проверка, если os.path.isdir("C:\Program Files (x86)"). Вы просто печатаете его.

Вместо

print(os.path.isdir("C:\Program Files (x86)")) 
while True: 

Вам нужно сделать

if os.path.isdir(r"C:\Program Files (x86)"): 

Примечание стороны:

Оба хрома и светлячок традиционно ставят себя на пути, так что есть хороший шанс, что вы можете просто сделать subprocess.Popen('firefox.exe')/subprocess.Popen('chrome.exe').

+0

Спасибо, что это сработало (это было так глупо со мной, чтобы совершить такую ​​ошибку) –

-1

для создания пути использования функции питона встроенные модули, которые не испортит путь

if os.path.exists(os.path.join('C:', os.path.sep(), 'Program Files')): 
    # do your stuff 
+0

Это правда, но это не проблема OP. '\ P' не является допустимым выходом, поэтому вам не нужно это делать. –

Смежные вопросы