我想在我的python腳本中使用bash函數來定位特定的目錄,然後grep目錄中的給定文件。問題是我只有部分目錄名,所以我需要使用bash函數find來獲取目錄名的其餘部分(名稱是唯一的,並且只會返回一個文件夾)在python解釋器與腳本文件中運行時出現的不同結果
我有的代碼到目前爲止如下:
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不幸的是。
如果它是/path/blah/foldername.1234並且我只知道該目錄的文件夾名稱部分,它將如何工作? – user2506070
**將匹配編輯的多個目錄。 –
此模塊完全替代我的代碼中的查找, glob.glob(「/ path/to/dir /%s *」%part_of_foldername) 展開爲正確的路徑。非常感謝! – user2506070