2012-03-12 74 views
-1

我想寫一個小型的python程序,它將在所有節點上運行,我有4個節點
,其名稱如pl-1,pl-2,pl-3和pl-4,每個節點將有一個像python改變目錄

/home/backup/traffic-1, 
/home/backup/traffic-2, 
/home/backup/traffic-3, 
/home/backup/traffic-4 

分別。 現在我有一個python腳本,它將運行在所有pl-s上,它將執行os.chdir到
/home/backup/traffic- [?]並刪除traffic- [?]的內容。 由於腳本實例在所有pl-s中都是相同的,我如何將目錄更改爲 /home/backup/traffic- [?],以便在pl-1上執行腳本時,chdir會進入 /home /備份/流量-1,pl-2進入流量-2等?

+4

段落中斷將有助於您的問題的可讀性很多。 – Amber 2012-03-12 07:45:00

回答

1

你不應該改變目錄,它是脆弱的。打開文件時使用文件的完整路徑。

+0

只有一個腳本實例,所以chdir應該根據pl的名字發生,運行在pl-1上的腳本實例應該是刪除traffic-1數據,pl-2應該刪除traffic-2,.. ... – user1081026 2012-03-12 07:56:22

+0

@ user1081026:不。不要chdir。 – 2012-03-12 08:57:56

+0

如果主機名只有一個數字結尾,下面一個可以工作, 我需要分割一個數字和多個數字, 就像我需要分割例如pl-1和pl-10。怎麼做? from socket import gethostname postfix = gethostname()。split(' - ')[1] dir ='/ home/backup/traffic - '+ postfix – user1081026 2012-03-12 09:45:57

0

您可以將節點編號作爲程序的參數傳遞以構建目標路徑。

如果腳本的執行行必須與所有節點相同,則可以將該編號寫入一個文件(如某種配置文件),然後從腳本中讀取該文件。

+0

節點數量可以變化 – user1081026 2012-03-12 07:58:11

+0

然後你可以選擇第二種方式,寫一個文件來配置每個節點。 – 2012-03-12 08:11:50

+0

如果主機名只有一個數字結尾,下面一個可以工作, 我需要分割一個數字和多個數字, 就像我需要分割爲例如pl-1和pl-10。怎麼做? from套接字導入gethostname postfix = gethostname()。split(' - ')[1] dir ='/ home/backup/traffic - '+ postfix – user1081026 2012-03-12 09:46:46

1
from socket import gethostname 
postfix = gethostname().split('-')[1] 
dir = '/home/backup/traffic-'+postfix 
+0

在某些情況下,後綴數可能大於1位數,如何處理這個?例如,對於節點號碼10,它應該處理單個數字和多位數字後綴 – user1081026 2012-03-12 08:11:25

+0

下面的一個作品,如果主機名只有一個數字結束, 我需要分裂一個數字,也爲多個數字, 像我需要分割爲例如pl-1和pl-10。怎麼做? from socket import gethostname postfix = gethostname()。split(' - ')[1] dir ='/ home/backup/traffic - '+ postfix – user1081026 2012-03-12 09:46:33

+0

我不明白你的問題,你的問題是什麼?嘗試分割字符串'pl-10',並得到兩個變量列表['pl','10']。 – Denis 2012-03-12 10:19:53