2014-07-11 177 views
0

我有以下命令 lessc lessc xyz.less> xyz.css蟒蛇運行lessc命令

我想運行在python該命令爲此我寫了這個代碼

try: 
     project_path = settings.PROJECT_ROOT 
     less_path = os.path.join(project_path, "static\\less") 
     css_path = os.path.join(project_path, "static\\css") 
    except Exception as e: 
     print traceback.format_exc() 
    less_file = [f for f in os.listdir(less_path) if isfile(join(less_path, f))] 
    for files in less_file: 
     file_name = os.path.splitext(files)[0] 
     cmd = '%s\%s > %s\%s' % (less_path, files, css_path, file_name + '.css') 
     p = subprocess.Popen(['lessc', cmd], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

但給出錯誤windowerror 2找不到路徑指定

+0

貌似在反斜槓''%s \%s''應該加倍(或使用原始字符串)。 –

+0

請您詳細說明,因爲雙斜槓不起作用。給出了相同的錯誤 – Muneeb

+0

這是CMD值「d:\\ Muneeb \\ Inpired最新2014年4月7日\\啓發-重新設計\\ web應用\\啓發\\靜態\\少\\ alerts.less> d:\ \ Muneeb \\ Inpired最新的2014年4月7日\\的啓發,重新設計\\ \\的webapp啓發\\ \\靜態CSS \\ alerts.css' – Muneeb

回答

0

確保「lessc」是在你的路徑,你可以嘗試使用完整路徑,而不是到lessc。

你並不需要使用shell風格的重定向與POPEN這樣,檢查subprocess.Popen docs

這裏是如何做到這一點無殼重定向一個例子:

import subprocess 

lessc_command = '/path/to/lessc' 
less_file_path = '/path/to/input.less' 
css_file_path = '/path/to/output.css' 
with open(css_file_path, 'w') as css_file: 
    less_process = subprocess.Popen([lessc_command, less_file_path], stdout=css_file) 
    less_process.communicate()