2016-10-04 59 views
0

我堅持我的腳本在一個點。劇本是這個Python腳本來檢查目錄不工作

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的窗口。)來查找瀏覽器chromefirefox,取決於用戶擁有哪一個(我假設他們有其中之一)。由於Chrome和Firefox的路徑在64位和32位計算機(程序文件和程序文件(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)"): 

旁註:

器和Firefox傳統上把自己的路徑上,所以有一個很好的機會,你可以做subprocess.Popen('firefox.exe')/subprocess.Popen('chrome.exe')

+0

謝謝你的工作,(這是我做這樣一個錯誤是如此愚蠢) –

-1

創建路徑使用內建的python函數不會弄亂路徑

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

這是真的,但它不是OP的問題。 '\ P'不是有效的轉義,所以你不需要這樣做。 –