【发布时间】:2023-01-08 23:21:28
【问题描述】:
我正在使用 subprocess 模块来创建一些目录。但是在某些情况下,同一命令可能会在受限目录中创建目录。在这种情况下,我会向控制台输出:mkdir: cannot create directory 'location/to/directory': Permission denied
如何避免此输出到控制台?
我尝试了以下命令:
subprocess.run(["mkdir", "-p", f"{outdir}/archive/backup_{curr_date}/"],check=True,stdout=subprocess.DEVNULL)
subprocess.run(["mkdir", "-p", f"{outdir}/archive/backup_{curr_date}/"],check=True,stdout=subprocess.PIPE)
subprocess.run(["mkdir", "-p", f"{outdir}/archive/backup_{curr_date}/"],check=True,capture_output=True)
【问题讨论】:
-
为什么要运行子进程来创建目录?为此使用
os.mkdir。 -
由于输出是一个错误,它可能通过 stderr 而不是 stdout。
-
标准错误是无。由于某种原因,这不会引发异常。
-
@zvone 不使用
os.mkdir()因为我想创建中间目录。因此,另一种选择是使用makedirs(),但随后它会引发FileExistsError,但我想捕获权限被拒绝的实际原因。
标签: python python-3.x subprocess stdout