TL; DR
subprocess.call(cwd=filepath)
не работает, когда я устанавливаю переменную filepath
из текстового файла, но работает, когда я устанавливаю ее вручную с использованием идентичного пути.
Подробнее
Когда я использую subprocess.call
, я указываю cwd
команды с помощью строковой переменной. Когда строка определяется вручную, все работает так, как должно. Однако я хочу загрузить путь cwd из значения в текстовом файле. У меня также есть эта часть, и я загружаю правильное значение из текстового файла. Когда для cwd=filepath
и filepath
задано строковое значение, загружаемое из текстового файла, я получаю NotADirectoryError: [WinError 267] The directory name is invalid.
. Имейте в виду, что если я вручную задаю переменную с точно таким же путем, я не получу эту ошибку. Я думаю, что это какая-то проблема форматирования, и я поэкспериментировал с ней / несколько дней искал inte rnet, но не нашел работающего решения.
Full Код
import subprocess # to run the process.
import pathlib #to get the path of the file.
programpath = str(pathlib.WindowsPath(__file__).parent.absolute())
blenderfilepath = 'C:/Program Files/Blender Foundation/Blender 2.81/'
settingsfile = 'settings'
# Load in the variables from settings.
def Load():
global blenderfilepath
# # look inside settings file for settings.
sf = open(programpath + '\\' + settingsfile, 'r')
for line in sf:
if 'BPL' in line:
bfp = line.split('-', maxsplit=1)
blenderfilepath = str(pathlib.Path(bfp[1]))
print('Path loaded for Blender: ' + blenderfilepath)
else:
print('Using default config...')
return
sf.close()
print('Settings loaded')
# Run next job executes the command to run the next job.
def RunNextJob():
print('Running next job...')
print(blenderfilepath)
currentjob = subprocess.call('blender.exe', cwd=blenderfilepath, shell=True, stdout=subprocess.PIPE)
RunNextJob()
Дополнительная информация и спасибо!
Изначально я просто вытаскивал строку из файла без элемента pathlib. Я попытался использовать просто pathlib без преобразования его в строку, а также. Об этом стоит упомянуть.
Для дополнительного контекста файл «настроек» представляет собой одну строку, содержащую одну строку:
BPL- C: / Program Files / Blender Foundation / Blender 2.81 /
Он анализируется для извлечения пути. Я подтвердил, что путь извлечен правильно.
Любая помощь приветствуется. Спасибо!