2017-07-31 40 views
0

我創造了這個小Python腳本Essai_Bash.py推出一個Python腳本做一些測試:使用ls命令,在每個子目錄

#!/usr/bin/python 

import argparse 
import os 

parser = argparse.ArgumentParser() 
parser.add_argument('-i', action='store', dest='InputDir', help='Working Directory') # Empty folders for outputs. 

parser.add_argument('--version', action='version', version='%(prog)s 0.1') 

results = parser.parse_args() 
print 'Current input directory  =', results.InputDir 

dir_path=str(os.path.abspath(results.InputDir)) # Retrieving an output folder name to use as species ID: 
path,CodeSp = os.path.split(dir_path) 

print "Currently working on species:  "+str(CodeSp) 

回我的殼,我鍵入下面的命令,希望我的腳本在每個存在於我的「Essai_Bash」文件夾目錄下運行:

listdir='ls ../Main_folder/' # I first used backtips instead of simple quotes but it did not work. 
for dir in $listdir; do ./Essai_Bash.py -i ../Main_folder/$dir; done 

我肯定失去了一些東西很明顯,但它不工作。看起來像$ listdir被認爲是一個字符串而不是目錄列表。但是,只需在我的shell中輸入$listdir實際上給了我這個列表!

+0

您應該使用反引號 –

+0

德米特里嗨,這是很奇怪的;我在一開始就這樣做了,它不起作用......我絕對應該錯過了一些東西:)非常感謝你! – Chrys

+3

你應該*不*使用'ls'就這樣。 '在dir中../Main_folder/*;做./Essai_Bash.py -i「$ dir」; done'。 – chepner

回答

2

只要使用glob擴展,解析ls的輸出是不安全的。 也dir變量已經包含../Main_folder/

listdir=(../Main_folder/*/) 
for dir in "${listdir[@]}"; do ./Essai_Bash.py -i "$dir"; done 
+0

感謝Nahuel!祝你有個美好的一天:) – Chrys