我想創建一個將檔案傳遞給 Linux shell 程式的 Python (3) 腳本。很簡單,但我不確定如何將可能包含單引號或雙引號和空格的檔案名傳遞給 shell。我大概需要分隔檔案名以防它們包含空格。
我可能會考慮使用類似的命令字串f"wc -c '{filename}'",但如果我遇到包含單引號的檔案名,它就會崩潰。同樣,如果我用雙引號分隔并遇到包含這些的檔案。
就像Bob's "special" file一個有效的 ext4 檔案名一樣,我該如何應對所有的可能性?
uj5u.com熱心網友回復:
正如 Tim Roberts 在評論中提到的,您可以使用subprocess模塊來繞過這個問題。這是一個簡短的示例(假設您有一個檔案名串列),用于將檔案名串列傳遞給wc -c:
from subprocess import run
# assuming you have got a list of filenames
filenames = ['test.py', "Bob's special file", 'test space.py']
for filename in filenames:
run(['wc', '-c', filename])
順便說一句,如果你想使用 Python 來獲取一個特定目錄下的所有檔案名,你可以考慮os.listdir.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529242.html
