我有下面的 python 代码,它正在创建一个大型 shell 脚本。我想使用 \n 来创建一个新行以保持脚本看起来干净,但 \n 似乎导致外壳看不到第一行。如果我在 textpad/sublime 中编辑脚本,我可以去掉 /n 并且脚本运行良好。我知道 /n 是一个新行,但是有什么方法可以让 python 写入单独的行而不将 /n 附加到末尾
fip6 = open("github_ip6.sh", "w", newline='')
fip6.write('aws ec2 modify-managed-prefix-list \ ' + '\n')
fip6.write(' --prefix-list-id pl-047XXXXX \ ' + '\n')
for address in actions:
if not is_ipv4_only(address):
fip6.write(' --add-entries Cidr=' + address + ',Description=' + address + ' \ ' + '\n')
fip6.write(" --current-version 1")
fip6.close()
答案 0 :(得分:1)
您可以使用 print
和 file
关键字参数:
with open("github_ip6.sh", "w") as fip6:
print('aws ec2 modify-managed-prefix-list \\', file=fip6)
print(' --prefix-list-id pl047XXXXX \\', file=fip6)
for address in actions:
if not is_ipv4_only(address):
print(f' --add-entries Cidr={address}, Description={address} \\', file=fip6)
print(' --current-version 1', file=fip6)
您还可以使用 contextlib
中的上下文管理器将 sys.stdout
临时替换为您的输出文件。
from contextlib import redirect_stdout
with open("github_ip6.sh", "w") as fip6:
with redirect_stdout(fip6):
print('aws ec2 modify-managed-prefix-list \\')
print(' --prefix-list-id pl047XXXXX \\')
for address in actions:
if not is_ipv4_only(address):
print(f' --add-entries Cidr={address}, Description={address} \\')
print(' --current-version 1')