2011-09-15 5 views
0

こんにちは私が働いている会社のビルドシステムを実行します。ブランディングとバージョンのmsi名を変更するためのPythonポストビルド?

現在、ビルドによって生成されたmsiの名前を取得するために辞書機能を使用しています。そのリリース。

def Rename_MSI(dict): 
    global Src_Dir 
    for msi in dict.keys(): 
     if os.path.exists(Src_Dir + "\\" + msi): 
      print "renaming ", msi, "to ", dict[msi] 
      os.rename(Src_Dir + "\\" + msi, Src_Dir + "\\" + dict[msi]) 
     else: 
      print "Rename function failed", msi, "does not exist" 
      sys.exit(3) 

チームによって作成されている名前も標準化されているので、私は辞書を前進させずに名前を変更できると確信しています。 ProductSolution_x64.msi

私はこの Brand_ProductSolution_x64.msi

そして、このようなバージョン管理のように先頭にブランディングを追加する必要があります:それは、ビルドから来ているよう MSI名がこれです? Brand_ProductSolution_10_2 _ _ x64の.msi

私はこのような機能を考えたが、私はスライスして本当に良いではない午前: のstr [:LEN(文字列)-8]

ので、このような何か? newnameの=%+ STR +%STR [:LEN(文字列)-8]%(ブランド、バージョン)

答えて

0
import os 

msi = "ProductSolution_x64.msi" 

name,arch = os.path.splitext(msi)[0].split('_')  

newname = "%s_%s_%s_%s.msi" %(brand, name, version, arch) 

が動作するはずですどのような援助のため、事前に

おかげで...

+0

ことすごかった!!それは魅力のように働く。 – user875531

+0

もう1つ質問あります。 私は使用している分割に精通していませんが、分割識別子として '_'を使用していますが、[0]は何ですか? 私はこの同じメソッドを使用することができますが、この他のmsiのセットを使用する関数のその部分を変更する必要があると思います Brand_ProductSolution_x64.msi – user875531

+0

[0]は、splitext呼び出しの最初の部分に適用されることを意味します(つまり、拡張子のないファイル名)。この場合、splitは3つの要素を返しますので、brand、name、arch = ...と残りの部分は前と同じです。 –

関連する問題