我是python的新手,我搜索了一些文章,但沒有找到正確的語法來讀取文件並在python中執行awk行處理。我需要你的幫助來解決這個問題。python逐行數據處理
這是我的構建和部署的bash腳本看起來,我讀了bash中的configurationf文件,如下所示。
backup /apps/backup
oracle /opt/qosmon/qostool/oracle oracle-client-12.1.0.1.0
和bash的閱讀部分的腳本看起來像下面
while read line
do
case "$line" in */package*) continue ;; esac
host_file_array+=("$line")
done < ${HOST_FILE}
for ((i=0 ; i < ${#host_file_array[*]}; i++))
do
# echo "${host_file_array[i]}"
host_file_line="${host_file_array[i]}"
if [[ "$host_file_line" != "#"* ]];
then
COMPONENT_NAME=$(echo $host_file_line | awk '{print $1;}')
DIRECTORY=$(echo $host_file_line | awk '{print $2;}')
VERSION=$(echo $host_file_line | awk '{print $3;}')
if [[ ("${COMPONENT_NAME}" == *"oracle"*) ]];
then
print_parameters "Status ${DIRECTORY}/${COMPONENT_NAME}"
/bin/bash ${DIRECTORY}/${COMPONENT_NAME}/current/script/manage-oracle.sh ${FORMAT_STRING} start
fi
etc .........
如何同樣可以conveted到Python。這是我迄今在python中準備的。
f = open ('%s' % host_file,"r")
array = []
line = f.readline()
index = 0
while line:
line = line.strip("\n ' '")
line=line.split()
array.append([])
for item in line:
array[index].append(item)
line = f.readline()
index+= 1
f.close()
我試圖在Python分裂,因爲它們的配置文件沒有在所有的行相等的列數,我得到的指數必然錯誤。什麼是處理它的最好方法。
我更關心的是下面,我已經寫在bash線。 爲((I = 0; I <$ {#host_file_array [*]};我++)) 做 #回聲 「$ {host_file_array [I]}」 host_file_line = 「$ {host_file_array [I]}」 如果[[「$ host_file_line」!=「#」*]]; then COMPONENT_NAME = $(echo $ host_file_line | awk'{print $ 1;}') DIRECTORY = $(echo $ host_file_line | awk'{print $ 2;}') VERSION = $(echo $ host_file_line | awk'{打印$ 3;}') if [[(「$ {COMPONENT_NAME}」== *「oracle」*)]]; – user3493124
更新了我的答案 – msvalkon