我想將列表中存儲的文件與位於可能是W2K3或W2K8的服務器上的同一文件進行比較。我試圖使用一個單一的功能,但我堅持這個if語句。我試圖找出如何讓正確的目錄路徑爲os.walk():
如何使用基於操作系統版本的python來瀏覽目錄?
if osVer == 'serverW2k3':
continue
elif osVer == 'serverW2k8':
for folder, subfolders, files in os.walk():
我確實有這方面的工作之前,但有重複行,所以我想簡化代碼。 這裏是滿級:
class checkstatus:
def __init__(self):
print 'Checking Status...'
chkbkpstats = csv.reader(file('c://temp//networkerservers.csv'))
srvrs = []
for row in chkbkpstats:
srvrs.append({'Name' : row[0], 'Instance' : row[1]})
for srvr in srvrs:
srvrName = (srvr['Name'])
srvrInst = (srvr['Instance'])
w2k3Chk = r'\\%s\d$\DA$Utils\log\networker' % srvrName
w2k8Chk = r'\\%s\c$\ProgramData\SQL\DA$Utils\log\networker' % srvrName
try:
c = wmi.WMI(srvr['Name'])
except:
print 'Error connecting to %s to check OS version' % srvrName
else:
osVer = c.Win32_OperatingSystem()[0].Caption
if '2003' in osVer:
return 'serverW2k3'
#self.fileCheck(w2k3Chk, w2k8Chk, srvrInst, srvrName)
elif '2008' in osVer:
return 'serverW2k8'
#self.fileCheck(w2k3Chk, w2k8Chk, srvrInst, srvrName)
def fileCheck(self, w2k3Chk, w2k8Chk, srvrInst, srvrName, osVer):
found = False
if osVer == 'serverW2k3':
continue
elif osVer == 'serverW2k8':
for folder, subfolders, files in os.walk():
for sqlFile in files:
if sqlFile == srvrInst + ".log":
found = True
print 'The Backup For %s on %s Still Running' % (srvrInst, srvrName)
elif sqlFile == (srvrInst + ".ok"):
found = True
print 'The Backup For %s on %s Completed Successfully' % (srvrInst, srvrName)
elif sqlFile == (srvrInst + ".err"):
found = True
print 'The Backup For %s on %s Has Failed' % (srvrInst, srvrName)
if not found:
print 'No file for %s found on %s' % (srvrInst, srvrName)
或許這更好的地方是[代碼審查(http://codereview.stackexchange.com/) – inspectorG4dget