我有一個問題。我一直在努力學習Python。對於一個項目,我想爲我的備份服務器製作一個ncurses GUI。我的備份服務器運行rdiff-backup,我想讓ncurses採用變量名稱並將它們插入到我的腳本中。我一直在努力做大量的閱讀,所以我不問愚蠢的問題。用於Linux命令的腳本Python
這裏是我的運行腳本功能:
def runScript():
# Cannot concatenate 'str' and 'list' objects
#script = rdiff + rdiffArgs
script = rdiff + ' ' + rdiffVerbosity + ' ' + rdiffStatistics \
+ ' ' + clientName + '@' + clientHost + '::' + clientDir \
+ ' ' + serverDir
os.system(script)
我原本以爲會是整潔是所有的變量添加到列表中,這樣我就可以只運行說
script = rdiff + rdiffArgs
有沒有更好的方法來做到這一點沒有所有的空間連接?
感謝您的協助
編輯:讓我張貼到目前爲止的整個劇本。我也不是很清楚,我真的感謝您的幫助和耐心
#!/usr/bin/env python
import os
import smtplib
# Global variables
rdiff = '/usr/bin/rdiff-backup'
rdiffVerbosity = '-v5'
rdiffStatistics = '--print-statistics'
emailSmtp = 'smtp.gmail.com'
smtpPort = '465'
emailUsername = 'reports'
emailPassword = '3kc9dl'
emailTo = '[email protected]'
emailFrom = '[email protected]'
serverName = 'root'
serverHost = 'SV-Datasafe'
serverDir = '/srv/backup/SV-Samba01'
clientName = 'root'
clientHost = 'SV-Samba01'
clientDir = '/srv'
rdiffArgs = rdiffArgs = [rdiffVerbosity, rdiffStatistics, \
clientName + '@' + clientHost + '::' \
+clientDir + ' ' + serverDir]
time = ''
dateStamp = datetime.now()
def sendEmail():
subject = dateStamp + clientName
body = clientDir + ' on ' + clientHost + ' backed up to ' + serverName + \
' in the directory ' + serverDir + ' on ' + dateStamp
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (emailFrom, emailTo, subject, body)
deliverEmail = smtplib.SMTP(emailSmtp, port=smtpPort)
deliverEmail.login(emailUsername, emailPassword)
def runScript():
# Cannot concatenate 'str' and 'list' objects
#script = rdiff + rdiffArgs
script = rdiff + ' ' + rdiffVerbosity + ' ' + rdiffStatistics \
+ ' ' + clientName + '@' + clientHost + '::' + clientDir \
+ ' ' + serverDir
os.system(script)
# TODO:: Logging
不知道你的問題是什麼,但是從我的理解,你想rdiffArgs是一個字符串列表,並添加文字'rdiff'到那個前面?我認爲你正在尋找: 腳本= [rdiff] + rdiffArgs或''.join([rdiff] + rdiffArgs)如果你想它作爲一個字符串。 – abeyer 2010-01-09 03:30:54
這將導致一個列表。提問者可能想要得到的字符串,因爲這是送入os.system()的東西。 – 2010-01-09 03:32:07
'os。system()'不應該被使用,所以任何答案都可以被認爲是不正確的。 – 2010-01-09 04:11:10