正如 cmets 中已经指出的,os.system 的参数只是一个字符串;所以你可以使用 Python 的常规字符串格式化功能来创建它。
import os
urlpath = input('Enter the URL')
filename = input('Enter the filename with extension')
os.system("svn export '{0}/{1}'".format(urlpath, filename))
但是,您可能应该更喜欢 subprocess.run,正如 os.system 文档中强烈暗示的那样。
import subprocess
urlpath = input('Enter the URL')
filename = input('Enter the filename with extension')
subprocess.run(['svn', 'export', urlpath+'/'+filename],
check=True)
使用check=True,如果命令失败(os.system 只会让您知道退出状态,您没有检查)并且因为我们不使用shell=True,您会得到一个明确的错误,这应该是快一点。还要注意第一个参数是一个标记列表,而不是 shell 必须再次分离的字符串(请记住,这里现在没有 shell)。
subprocess.run() 在 Python 3.5 中引入;如果您需要支持旧版本,也许可以探索用subprocess.check_call() 替换它
一个更好的设计将摆脱交互式input调用并允许用户将参数作为命令行参数传递(sys.argv);这样,您就可以使用 shell 的历史记录和文件名完成功能,因此您无需手动输入完整的文件名,并且可以轻松地调用您最近使用过的文件。这也使得围绕脚本构建额外的自动化变得可行,因为这样程序可以轻松驱动其他程序。
import sys
import subprocess
import logging
if len(sys.argv) != 3:
logging.error('syntax: {0} baseurl filename'.format(
sys.argv[0].split('/')[-1}))
sys.exit(2)
urlpath = sys.argv[1]
filename = sys.argv[2]
subprocess.run(['svn', 'export', urlpath+'/'+filename],
check=True)