【发布时间】:2018-01-05 04:03:16
【问题描述】:
已解决请在下方查看我的回答,供任何可能觉得这很有帮助的人参考。
我有两个脚本 a.py 和 b.py。 在我当前的目录“C:\Users\MyName\Desktop\MAIN”中,我运行 > python a.py.
第一个脚本 a.py 在我的当前目录中运行,对一堆文件执行一些操作并创建一个新目录 (testA),其中包含这些文件的编辑版本,这些文件同时移动到该新目录中。然后我需要为 testA 中的文件运行 b.py。
作为初学者,我只需将我的 b.py 脚本复制并粘贴到 testA 中,然后再次执行命令 "> python b.py",它会在这些新文件上运行一些命令并使用这些文件创建另一个文件夹 (testB)编辑过的文件。
我试图消除等待 a.py 完成的麻烦,进入新目录,粘贴 b.py,然后运行 b.py。我正在尝试编写一个 bash 脚本来执行这些脚本,同时保持我的目录层次结构。
#!/usr/bin/env bash
python a.py && python b.py
脚本 a.py 运行顺利,但 b.py 根本不执行。没有出现关于 b.py 失败的错误消息,我只是认为它无法执行,因为一旦 a.py 完成,b.py 在那个 NEW 目录中就不存在了。 我可以在 b.py 中添加一个小脚本,将其移动到新目录中吗?我实际上也尝试过更改 b.py 目录路径,但没有成功。
例如在 b.py 中:
mydir = os.getcwd() # would be the same path as a.py
mydir_new = os.chdir(mydir+"\\testA")
我在 b.py 中的所有实例中都将 mydirs 更改为 mydir_new,但这也没什么区别...我也不知道如何将脚本移动到 bash 中的新目录中。
作为文件夹的小流程图:
MAIN # main folder with unedited files and both a.py and b.py scripts
|
| (execute a.py)
|
--------testA # first folder created with first edits of files
|
| (execute b.py)
|
--------------testB # final folder created with final edits of files
TLDR:如果 b.py 依赖于在 testA 中创建和存储的文件,我如何从主测试文件夹(bash 脚本样式?)执行 a.py 和 b.py。通常我将 b.py 复制并粘贴到 testA 中,然后运行 b.py - 但现在我有 200 多个文件,所以复制和粘贴是浪费时间。
【问题讨论】:
-
使用
..module_name访问当前目录上方目录中的模块 -
我现在可以在我的主目录中使用 b.py。 bash 脚本不会执行 b.py 但是一旦 a.py 完成。如果我输入“python a.py”,那么“python b.py”它就可以了。不知道为什么“python a.py & python b.py”不做同样的事情。
-
没关系,我终于明白了,这只是一个愚蠢的错字!拥有“python a.py & python b.py”在 bash 脚本中确实有效!
标签: python bash python-2.7