Я строю команды в Python, включая выражение glob, которое также содержит пробельные символы.
Я прочитал, что предложенный способ использует shlex.quote , но он работает только для реальныхвосстановленные пути, потому что включение выражения в '
или "
также блокирует расширение оболочки glob .
Простейший возможный пример:
touch 'a file.txt'
ls 'a file.*' # this gives an error because the glob is not resolved
# shlex.quote achieves the same result
python3 -c "import os; from shlex import quote; os.system('ls '+quote('a file.*'))"
ls a\ file.* # this is what I need
Я знаю, чтоЯ могу использовать любую технику замены для замены пробелов ' '
на '\ '
в этой строке (например, регулярное выражение для имени одной), но я подумал, что если уже существует подходящая функция, я должен сначала искать ее, а не писать свою собственнуюкод ...
Реальный случай
Составляемые мной команды должны влиять на несколько файлов, путь к которым похож (подумайте об этом, разделенных подчеркиванием '_'
):
dir/WrongID_Another ID With Spaces_other-stuff-with-hyphens.bmp
Я хочу получить такие команды, как:
rename "s/^WrongID_/RightId_/" dir/WrongID_Another\ ID\ With\ Spaces_*.*
... где dir
, WrongID
, Another ID With Spaces
, RightID
, считываются из таблицы
Многие такие команды написаны наодин файл, скрипт, который я потом передам в bash.