Передача нескольких файлов с пробелами в скрипт Python

Передача нескольких файлов с пробелами в скрипт Python

Мне нужно преобразовать много файлов .ai в .svg, и я нашел инструмент ai2svg. Я попробовал

for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done

Но я получаю такие ошибки:

IOError: [Errno 2] Нет такого файла или каталога: «Профиль» Трассировка (последний вызов был последним): Файл «ai2svg.py», строка 171, в inf = open (sys.argv[1])

Если имя файла "Profile test.ai", есть ли способ обойти это, кроме как предварительно удалить все пробелы в именах из файлов .ai?

Спасибо.

решение1

Это сделает это:

find . -type f -name \*.ai -exec python ai2svg.py {} \;

Если ai2svg.pyвы работаете с несколькими файлами (как большинство инструментов *nix), вы можете сделать это, чтобы выполнить команду минимальное количество раз:

find . -type f -name \*.ai -exec python ai2svg.py {} +

Если вас интересуют только файлы в текущем каталоге, вы можете использовать для этого стандартный цикл:

for file in *.ai
do
    python ai2svg.py "$file"
done

решение2

Правильный способ сделать это следующий:

find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done

Обратите внимание , что -print0опция findwhich вместе с -d ''in readудаляет все пробельные символы в именах файлов, включая символы новой строки и табуляции.

Связанный контент