带{}的python格式函数

2024-04-18 17:58:59 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法用format函数得到这个输出

name1 = 'test1'
name2 = 'test2'
ps_script = """powershell.exe Start-Job -ScriptBlock {D:\abc\abc\abc\abc.ps1 {} {} abc}""".format(name1,name2)
print(ps_script)

输出错误:

Traceback (most recent call last): File "main.py", line 6, in ps_script = """powershell.exe Start-Job -ScriptBlock {D:\abc\abc\abc\abc.ps1 {} {} abc}""".format(name1,name2) KeyError: 'D'

期望输出 powershell.exe开始作业-脚本块{D:\abc\abc\abc\abc.ps1测试1测试2 abc}


Tags: 函数formatscriptjobexestartpsabc
3条回答

与其创建一个字符串来运行这样的命令,不如考虑将^{}与参数列表一起使用(正如chepner在注释中建议的那样)。你知道吗

可能是这样的(注意,我添加了一个r,使其成为原始字符串;您希望在输入反斜杠时这样做,这样它们就不会被解释为转义字符):

from subprocess import run

cmds_start = r'powershell.exe Start-Job -ScriptBlock {D:\abc\abc\abc\abc.ps1 abc}'.split()
names = 'test1 test2'.split()

cmds = cmds_start[:-1] + names + cmds_start[-1:]

run(cmds)  # use commands list to run, not string

# but can still view the script like:
print(" ".join(cmds))  # or:
print(*cmds, sep=" ")

您需要转义才能获得文字字符:

name1 = 'test1'
name2 = 'test2'
ps_script = """powershell.exe Start-Job -ScriptBlock {{D:\\abc\\abc\\abc\\abc.ps1 {} {} abc}}""".format(name1,name2)
print(ps_script)

输出:

powershell.exe Start-Job -ScriptBlock {D:\abc\abc\abc\abc.ps1 test1 test2 abc}

使用double {{获取文本{

ps_script = """powershell.exe Start-Job -ScriptBlock {{D:\abc\abc\abc\abc.ps1 {} {} abc}}""".format(name1,name2)

相关问题 更多 >