Поэтому я пытаюсь вызвать тип команды Windows в каком-то произвольном файле. К сожалению, всякий раз, когда я преобразовываю свой cmd в команду оболочки в не-оболочку, она терпит неудачу. Таким образом, я не могу использовать рекомендуемый метод для обеспечения того, чтобы мой python script не мог быть использован. Вот пример.
import subprocess
cmd = "type" + '"' + "some_file_with_no_spaces_or_other_things_wrong" + '"'
p = subprocess.pOpen(cmd, shell = True)
но при попытке:
#Assume cmd split is done properly. Even when I manually put in the
#array with properly escaped quotes it does not work
subprocess.pOpen(cmd.split(), shell = False)
Это не удается, и я не знаю, как решить эту проблему. Я хотел бы иметь возможность называть эту команду безопасно, имея оболочку с помощью false, но всякий раз, когда я это делаю, я получаю следующую ошибку.
Traceback (most recent call last):
File "C:\Users\Skylion\git\LVDOWin\Bin\Osiris.py", line 72, in openFileDialog
stderr = STDOUT, shell = False, bufsize = 0, universal_newlines=True)
File "C:\Python34\lib\subprocess.py", line 859, in __init__
restore_signals, start_new_session)
File "C:\Python34\lib\subprocess.py", line 1112, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
Обратите внимание, что даже работает:
subprocess.Popen(['type'])
Выбросит ошибку. Моя проблема заключается в том, как я дезинфицирую имя файла, чтобы я мог либо запустить имя файла с помощью shell = True, либо правильно обработать shell = False.
Любая помощь в том, как правильно открыть файл таким образом, будет с благодарностью.