將帶有空格的多個檔案傳遞給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的選項find-d ''in一起read處理檔案名稱中的任何空白字符,包括換行符和製表符。

相關內容