我的程式以這種方式安全地復制:subprocess.run(scp -P 22 [email protected]:path/to/file $HOME/Downloads).
但它給了我以下錯誤:FileNotFoundError: [Errno 2] No such file or directory: 'scp -P 22 [email protected]:path/to/file $HOME/Downloads.
但是,shell=True像這樣添加可以subprocess.run(scp -P 22 [email protected]:path/to/file $HOME/Downloads, shell=True)修復它。
這是為什么?有沒有辦法解決它或者是shell=True必不可少的?
uj5u.com熱心網友回復:
如果您查看檔案,您會發現它subprocess.run實際上需要一個值串列,而不是單個字串:
subprocess.run( ["scp", "-P", "22",
"[email protected]:path/to/file"
"$HOME/Downloads"] )
但是,這里還有另一個問題。 $HOME是一個外殼變數。如果你不使用shell=True,那么你需要自己擴展它:
subprocess.run( ["scp", "-P", "22",
"[email protected]:path/to/file",
os.environ["HOME"] "/Downloads"] )
您不需要指定“-P 22”。這是 ssh 的默認埠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/434748.html
