如何在 Python 脚本中更改外部命令的目标目录
How to change target directory of an external command in a Python script
早上好,
我正在编写一个 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),我的想法是通过简单的文件比较让我知道两者之间的区别directories/file树.
但是,这不起作用,因为目录名称包含在文件中,这里是摘录:
...
2015-09-29 14:04:20 119 Dir1\InstallerData\...\MediaId.properties
2015-09-29 14:00:08 357 Dir1\InstallerData\...\my.ini
...
该文件中 "Dir1" 的存在打乱了比较。
我看到一个 "simple" 解决方案:修改命令的目标目录,例如:
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")
目的是结束以下 content_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)
早上好,
我正在编写一个 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),我的想法是通过简单的文件比较让我知道两者之间的区别directories/file树.
但是,这不起作用,因为目录名称包含在文件中,这里是摘录:
...
2015-09-29 14:04:20 119 Dir1\InstallerData\...\MediaId.properties
2015-09-29 14:00:08 357 Dir1\InstallerData\...\my.ini
...
该文件中 "Dir1" 的存在打乱了比较。
我看到一个 "simple" 解决方案:修改命令的目标目录,例如:
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")
目的是结束以下 content_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)