在 python 中格式化命令
Formatting a command in python
我能够通过命令行 运行 此命令,但是当我将它转移到 Python 脚本并 运行 它时,它不起作用。
test = 'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
subprocess.call(test)
我在 "returned non-zero exit status 255" 处收到错误消息。是因为我格式化字符串的方式吗?总体而言,我有哪些选择可以让它发挥作用?
编辑:已由 J.F 解决。塞巴斯蒂安
字符“\r”被当作墨盒 return 和“\t”作为制表符;通过在单引号之前添加 "r" 来使用原始输入;看看这个:
>>> test = 'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
>>> len(test)
172
>>> test2 = r'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
>>> len(test2)
174
如果在您的 Windows 机器上的 %PATH% 某处有 aws.exe
然后将其输出保存在给定文件中:
#!/usr/bin/env python
import subprocess
cmd = ('aws ec2 create-image --instance-id i-563b6379 '
'--name rwong_TestInstance --output text '
'--description rwong_TestInstance --no-reboot')
with open(r"V:\rwong\Work Files\Python\test.txt", 'wb', 0) as file:
subprocess.check_call(cmd, stdout=file)
也就是说,您的代码中至少存在两个问题:
- 转义序列,例如
\r\t
>
是一个 shell 重定向运算符,即您需要 运行 shell 或在 Python 中模拟它
我能够通过命令行 运行 此命令,但是当我将它转移到 Python 脚本并 运行 它时,它不起作用。
test = 'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
subprocess.call(test)
我在 "returned non-zero exit status 255" 处收到错误消息。是因为我格式化字符串的方式吗?总体而言,我有哪些选择可以让它发挥作用?
编辑:已由 J.F 解决。塞巴斯蒂安
字符“\r”被当作墨盒 return 和“\t”作为制表符;通过在单引号之前添加 "r" 来使用原始输入;看看这个:
>>> test = 'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
>>> len(test)
172
>>> test2 = r'aws ec2 create-image --instance-id i-563b6379 --name "rwong_TestInstance" --output text --description "rwong_TestInstance" --no-reboot > "V:\rwong\Work Files\Python\test.txt"'
>>> len(test2)
174
如果在您的 Windows 机器上的 %PATH% 某处有 aws.exe
然后将其输出保存在给定文件中:
#!/usr/bin/env python
import subprocess
cmd = ('aws ec2 create-image --instance-id i-563b6379 '
'--name rwong_TestInstance --output text '
'--description rwong_TestInstance --no-reboot')
with open(r"V:\rwong\Work Files\Python\test.txt", 'wb', 0) as file:
subprocess.check_call(cmd, stdout=file)
也就是说,您的代码中至少存在两个问题:
- 转义序列,例如
\r\t
>
是一个 shell 重定向运算符,即您需要 运行 shell 或在 Python 中模拟它