我有一个问题。我一直在努力学习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
2010-01-09
Dan
+0
不知道你的问题是什么,但是从我的理解,你想rdiffArgs是一个字符串列表,并添加文字'rdiff'到那个前面?我认为你正在寻找: 脚本= [rdiff] + rdiffArgs或''.join([rdiff] + rdiffArgs)如果你想它作为一个字符串。 –
2010-01-09 03:30:54
+0
这将导致一个列表。提问者可能想要得到的字符串,因为这是送入os.system()的东西。 –
2010-01-09 03:32:07
+1
'os。system()'不应该被使用,所以任何答案都可以被认为是不正确的。 –
2010-01-09 04:11:10