【问题标题】:Why can subprocess.Popen("mkdir dir", shell=True); os.chdir("./dir") fail?为什么 subprocess.Popen(\"mkdir dir\", shell=True); os.chdir(\"./dir\") 失败?
【发布时间】:2022-11-23 03:23:59
【问题描述】:

我正在使用 Python 来自动化一系列模拟。为此,脚本应创建一个目录,cd 进入该目录,开始模拟,将数据从该文件夹复制到不同的文件夹,然后进行另一次模拟,此后。但是当我尝试创建一个目录并 cd 进入我刚刚创建的目录时,我得到了一个 FileNotFoundError,尽管该目录在那里。下面给出了示例代码,我们如何解决这个问题?

import os
import subprocess as sp
sp.Popen("mkdir MyFolder", shell=True)
os.chdir("./MyFolder")
sp.Popen("touch ImInMyFolder.txt", shell=True)

How can we fix this?

【问题讨论】:

  • 不要使用 shell,只需执行 os.mkdir("MyFolder")。问题是,当使用Popen 时,Python 不会等待进程完成。该过程与您的过程并行运行。
  • 此外,您的touch 可以作为open("InMyFolder.txt").close() 完成。 subprocess 很棒,但如果有等效的 Python 服务,请不要使用它。

标签: python bash shell


【解决方案1】:

尝试这个。

os.chdir("MyFolder")

【讨论】:

  • 或者你的意思是“mkdir”。
  • os.chdir() 中删除 ./ 没有任何效果;需要修复的是 mkdir。
猜你喜欢
  • 2015-01-05
  • 2019-08-04
  • 2018-08-07
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
相关资源
最近更新 更多