2016-04-13 15 views
0

ile nasıl değiştirebilirim? Python'da (ve genel olarak kodlamada) yeni bir yenilik yapıyorum ve özel sorunuma çevrimiçi bir çözüm bulamadım. Şu anda bir kullanıcının bir dosyayı bir ağ konumuna kaydetmesine izin verecek bir araç oluşturuyorum. Dosya bir sürüm numarasına sahip olacaktır. Benim istediğim, komut dosyasını otomatik olarak kaydetmeden önce güncellemek. Komut dosyasının geri kalanı var, ama sorun yaşadığım otomatik sürüm. İşte ben bugüne kadar ne var: Muhtemelen ana() başka modülünde bir QPushbutton tarafından çağrılan olacak işaret olmalıdırDosya adının bir kısmını python

import re 
import os 

def main(): 
    wip_folder = "L:/xxx/xxx/xxx/scenes/wip/" 
    _file_list = os.listdir('%s' % wip_folder) 

    if os.path.exists('%s' wip_path): 
     for file in _file_list: 
      versionPattern = re.compile('_v\d{3}') 
      curVersions = versionPattern.findall('%s' % wip_folder) 
      curVersions.sort() 
      nextVersion = '_v%03d' % (int(curVersions[-1][2:]) + 1) 
     return nextVersion 
    else: 
     nextVersion = '_v001' 

    name = xxx_xxx_xx 
    name += '%s' nextVersion 
    name += '_xxx_wip 

. Ayrıca, bu wip_path büyük olasılıkla içinde tek bir dosyanın birkaç versiyonuna sahip olacaktır. Yani bu dosyanın wip_path versiyonunun 10 sürümü varsa, bu kaydetme v011 olmalıdır. Bu sorunun mantıklı olmaması durumunda özür dilerim. Herhangi bir yardım takdir edilecektir. Teşekkür ederim!

+0

Sorununuzun ne olduğundan tamamen emin değilsiniz. Sadece geçmiş sürümlerin nasıl bulunacağını ve yeni olanı nasıl adlandıracağınızı mı belirlemeye çalışıyorsunuz? – TheLazyScripter

+0

temel olarak, evet. En yüksek sürüm numarasını bulmak için wip klasöründen geçmem gerekiyor. Sonra nextVersion değişkeninde sakladığım bir dizeyi almak için o sürümün sürüm numarasına 1 eklemem gerekiyor. Ben daha sonra son adlandırma kuralı için bunu yapıyorum. Benim wip dizini ex_v001.doc ex_v002.doc içinde ex_v003.doc varsa Temelde, benim sonraki ismini vermek kaydetmek istiyorum: ex_v004.doc Yalnızca döngü dışında, bir kez regex derlemek için gereken – shagler

+0

. Sorunuz * does * sense btw yapar. ama sorunun ne olduğu belli değil. Mevcut çıktınız nedir? Şu an nasıl çalışmıyor? – jDo

cevap

0

Yeniden kullanmak zorunda değilsiniz, programlama basitleştirme ile ilgili ve karmaşık bir işlem yapıyorsunuz! Geri dönmek için seçtim ama bu işlevdeki herhangi bir şey, özellikle yapmak için gereken her şeye değişebilir! Sadece yorumları okuyun ve iyi şanslar!

def getVersioning(path): 
    #passing path 

    count = 1 #init count 
    versionStr = 'wip_path_v' 
    try: #in case path dosen't exist 
     for i in os.listdir(path): #loop thorough files in passed dir 
      if versionStr in i: #check if files contain default versioning string e.g. wip_path_V or any other (used in case other files are in the same dir) 
       count += 1 #incriment count 
    except: 
     os.mkdir(path) #makedir if one does not exist for future use 

    newName = versionStr + str(count) #new versioning file name 
    return newName #return new versioning name 

print getVersioning('tstFold') 
+0

Yanıtınız için teşekkür ederiz! Bu çözümü mümkün olan en kısa sürede deneyeceğim. Nasıl gittiğini size bildiririm! – shagler

+0

işe yaradı! Harikasın. Teşekkür ederim! – shagler

+0

Sevindim, yardımcı olabilirim! – TheLazyScripter

İlgili konular