如何在Python脚本中更改外部命令的目标目录

如何在Python脚本中更改外部命令的目标目录,python,directory,subprocess,Python,Directory,Subprocess,早上好, 我正在编写一个Python脚本来比较两个安装程序。因此,我使用“sfk”(瑞士文件刀)技术浏览解压后的目录,包括浏览*.jar文件) 我的脚本如下所示: cmd_sfk1 = "sfk list -hidden -arc -time -size -tofile content_dir1.txt " + lv_inst_dir1 cmd_sfk2 = "sfk list -hidden -arc -time -size -tofile content_dir2.txt " + l

早上好,
我正在编写一个Python脚本来比较两个安装程序。因此,我使用“sfk”(瑞士文件刀)技术浏览解压后的目录,包括浏览*.jar文件)
我的脚本如下所示:

  cmd_sfk1 = "sfk list -hidden -arc -time -size -tofile content_dir1.txt " + lv_inst_dir1
  cmd_sfk2 = "sfk list -hidden -arc -time -size -tofile content_dir2.txt " + lv_inst_dir2

  try:
    subprocess.call(cmd_sfk1)
  except Exception as ex:
    ...

  try:
    subprocess.call(cmd_sfk2)
  except Exception as ex:
    ...
如您所见,结果写在两个文件(content_dir1.txt)和(content_dir2.txt)中,通过简单的文件比较,可以看出两个目录/文件树之间的差异

但是,这不起作用,因为文件中包含目录名,下面是摘录:

...
2015-09-29 14:04:20          119 Dir1\InstallerData\...\MediaId.properties
2015-09-29 14:00:08          357 Dir1\InstallerData\...\\my.ini
...
该文件中出现“Dir1”会使比较结果混乱。

我看到一个“简单”的解决方案:修改命令的目标目录,类似:

  cmd_sfk1 = "sfk list -hidden -arc -time -size -tofile ../content_dir1.txt " + "."
  cmd_sfk2 = "sfk list -hidden -arc -time -size -tofile ../content_dir2.txt " + "."

  try:
    subprocess.call(cmd_sfk1, target_directory=lv_inst_dir1)
  except Exception as ex:
    ...

  try:
    subprocess.call(cmd_sfk2, target_directory=lv_inst_dir2)
  except Exception as ex:
    ...
(有点像DOS批处理文件中的“pushd”和“popd”)
其目的是以以下内容结束。\u dir1.txt内容:

...
2015-09-29 14:04:20          119 InstallerData\...\MediaId.properties
2015-09-29 14:00:08          357 InstallerData\...\\my.ini
...
(无“Dir1”)
现在我的问题是:有人知道如何在Python中修改子进程的目标目录吗?

谢谢

多米尼克

参数是
cwd

subprocess.call(cmd_sfk1, cwd=lv_inst_dir1)

非常感谢,这正是我要找的。似乎“cwd”代表“当前工作目录”。