2012-03-12 38 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