Я пытаюсь написать сценарий, который извлекает некоторые пути из файла конфигурации и вызывает системную оболочку для запуска команды, используя путь как часть команды. Это в основном дайджест-скрипт, который восстанавливает все файлы в каталоге. Пожалуйста, имейте в виду, я учу себя Python, это мой первый скрипт на Python, и это мой первый пост. Пожалуйста, извините за любые ошибки в этикете с моей стороны.
Цель состоит в том, чтобы заставить команду 'C: \ Program Files \ WinRAR \ Rar.exe x' работать в каталоге. К сожалению, я узнал, что Python не позволяет объединить строку с объектом Path, предположительно потому, что это два разных типа элементов. У меня есть следующее:
В файле конфигурации:
[Paths]
WinrarInstallPath = C:\Program Files\WinRAR\
NewFilesDirectory = M:\Directory\Where\Rar Files\Are\Located
Сценарий:
**SOME CODE***
new_files_dir = Path(config.get('Paths', 'NewFilesDirectory'))
winrar_dir = Path(config.get('Paths', 'WinrarInstallPath'))
**SOME MORE CODE**
os.chdir(new_files_dir)
for currentdir, dirnames, filenames in os.walk('.'):
os.system(winrar_dir + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')
, который дает мне ошибку "Ошибка типа: неподдерживаемый тип (ы) операнда для+: 'WindowsPath' и 'str' "
Я пробовал
os.system(str(winrar_dir) + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')
, но он не обрабатывает пробелы в именах каталогов. Я также пытался
os.system(os.path.join(winrar_dir, "rar.exe x ") + os.getcwd() + currentdir[1:] + '\\*.rar')
с тем же результатом
Я понимаю, что могу рассматривать его как строку с самого начала и сделать следующее
wrd = config.get('Paths', 'WinrarInstallationPath')
winrar_dir = '"' + wrd + '"'
os.system(winrar_dir + "rar.exe x " + os.getcwd() + currentdir[1:] + '\\*.rar')
, ноДо сих пор Python был довольно гладким, и это кажется очень неуклюжим, поэтому я чувствую, что что-то упустил, но пока не смог найти ответ.