我试图在我的 python 脚本中使用 bash 函数来允许我找到一个特定的目录,然后 grep 目录中的给定文件。问题是我只有部分目录名,所以我需要使用 bash 函数 find 来获取目录名的其余部分(名称是唯一的,并且只会返回一个文件夹)
我到目前为止的代码如下:
def get_tag(part_of_foldername):
import subprocess
import os
p1 = subprocess.Popen(["find", "/path/to/directory", "-maxdepth", "1", "-name", "%s.*" % part_of_foldername, "-type", "d"], stdout=subprocess.PIPE)
directory = p1.communicate()[0].strip('\n')
os.chdir(directory)
p2 = subprocess.Popen(["grep", "STUFF_", ".hgtags"], stdout=subprocess.PIPE)
tag = p2.comminucate()[0].strip('\n')
return tag
这才是真正奇怪的地方。此代码在您将其逐行输入交互式时有效,但在通过脚本运行时无效。当您将脚本文件导入交互式并调用该函数时,它也有效,但当它被主函数调用时则无效。我直接运行脚本得到的回溯如下:
Traceback (most recent call last):
File "./integration.py", line 64, in <module>
main()
File "./integration.py", line 48, in main
tag = get_tag(folder)
File "./integration.py", line 9, in get_date
os.chdir(directory)
OSError: [Errno 2] No such file or directory: ''
它在主函数中被调用,如下所示:
if block_dict[block][0]=='0':
tag = get_tag(folder)
“文件夹”先前被定义为字符串。
请注意我们使用 python 2.6,所以很遗憾我不能使用模块 check_output。