Как использовать Python в Windows, чтобы открыть JavaScript, интерпретировать его с помощью WScript и передать ему аргументы командной строки - PullRequest
0 голосов
/ 20 октября 2010

У меня есть формат, содержащий пути к файлам и аргументы командной строки для передачи этим файлам, когда они открываются в Windows.

Например, у меня может быть путь к файлу javascript и список аргументов командной строки для его передачи, в таком случае я хочу открыть файл javascript точно так же, как вы можете использовать os.startfile, и передать его аргументы командной строки - поскольку аргументы сохраняются в виде строки, я хотел бы передать ее в виде строки, но я также могу передать ее в виде списка, если это необходимо.

Я не совсем уверен, что мне следует использовать для этого, поскольку .js не является исполняемым файлом и, следовательно, вызывает ошибки в Popen, в то время как startfile принимает только глаголы в качестве второй команды.

Эта проблема может быть расширена до произвольного числа расширений файлов, которые необходимо открыть, и передать аргументы командной строки, но при интерпретации они будут интерпретироваться истинным исполняемым файлом.

1 Ответ

2 голосов
/ 20 октября 2010

Если в Windows зарегистрировано расширение .js для открытия с помощью wscript, вы можете сделать это, оставив это решение на усмотрение оболочки Windows.

Вы можете просто использовать os.system () , чтобы сделать то же самое, что и при вводе в командной строке, например:

import os
os.system('example.js arg1 arg2')

Вы также можете использовать команду start:

os.system('start example.js arg1 arg2') 

Если вам требуется больше энергии, например, для получения результатов, вы можете использовать subprocess.Popen () , но обязательно используйте shell=True (чтобы оболочка могла вызывать нужное приложение):

from subprocess import Popen
p = Popen('example.js arg1 arg2', shell=True)
# you can also do pass the filename and arguments separately:
# p = Popen(['example.js', 'arg1', 'arg2'], shell=True)
stdoutdata, stderrdata = p.communicate()

(хотя для этого, вероятно, потребуется cscript вместо wscript)

Если в Windows нет приложения по умолчанию для открытия файла (или если это не то, что вам нужно), то, конечно, вы сами по себе ...

...