我确信这很简单,但我尝试了几种设置,但似乎无法让它发挥作用。
我有以下代码:
import subprocess
p = subprocess.Popen('mkdir -p /backups/my_folder', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
它在 nginx
和 python 3
上的 flask
应用程序中运行
当执行此操作时,我收到以下错误:
/bin/sh: 1: mkdir: not found
我尝试过 shell=False
,我尝试过 Popen(['mkdir', ...])
,并且我尝试过 subprocess.run
像这样question/answer
如果我使用 shell=False 运行,则会收到以下错误:
Error: [Errno 2] No such file or directory: 'mkdir -p /backups/my_folder': 'mkdir -p /backups/my_folder'
当我执行 /bin/mkdir
时,它起作用了。但是,还有其他命令调用失败的子命令(例如 tar
调用 gz
)
为了让它发挥作用,我缺少什么?
运行:
Debian 9.8、Nginx 1.14.0、Python 3.6.8
编辑
我也需要它适用于其他命令。我知道我可以使用 os.makedirs,但我将执行几个不同的命令(rsync、ssh、tar 等)
最佳答案
对于这些简单的命令,请尝试使用 python 而不是调用 shell - 它使您更加独立于环境:
os.makedirs('/backups/my_folder', exist_ok=True)
关于python - 在 Debian 上使用 Python 3 找不到 mkdir 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56603517/