用于检查目录无效的Python脚本

时间:2016-10-04 13:36:05

标签: python python-2.7 subprocess

我一直坚持使用我的脚本。脚本就是这个

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或{{ 1}},取决于用户具有哪一个(我假设他们中的任何一个)。由于chrome和firefox的路径在64位与32位计算机(程序文件和程序文件(x84))之间有所不同,我想出了这个脚本,它检测x86文件夹是否存在。如果是,则继续在用于搜索浏览器的文件夹上。但是,如果没有,则假定它是32位并搜索firefox文件夹,并在该文件夹中搜索浏览器。 但是,当我运行脚本时,我收到此错误

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 部分,因为我有一个32位系统并且while True文件夹不存在!

2 个答案:

答案 0 :(得分:2)

您实际上并未查看是否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)"):

旁注:

chrome和firefox都传统上将自己放在路径上,因此您很有可能只能subprocess.Popen('firefox.exe') / subprocess.Popen('chrome.exe')

答案 1 :(得分:-1)

用于创建路径使用不会弄乱路径的内置函数python函数

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