You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将含特殊字符的多行文件内容正确写入新文件?

错误原因

你当前写法的核心问题是:直接将包含特殊字符的文件内容拼接进shell命令字符串,&、引号、换行、#等字符都会被shell识别为控制符做特殊解析。比如&会被判定为后台执行指令,直接把命令拆分为前后两段,才会出现Config: not found的报错,写入流程也会直接中断。
而且绕shell调用echo写入的方式完全没有必要,Python原生的文件操作接口可以完美规避shell特殊字符解析问题,性能也更高。

正确实现方案

方案1:Python原生文件写入(最推荐)

使用Python自带的文件操作接口写入,完全不会触发shell特殊字符解析,推荐优先用with上下文管理语法,会自动处理文件关闭,避免资源泄露:

# 读取源文件
with open("/file.dat", "r", encoding="utf-8") as fr:
    f = fr.read()

# 写入目标文件
with open("t.dat", "w", encoding="utf-8") as fw:
    fw.write(f)

如果你的需求只是完整复制文件,还可以用更简洁的shutil工具方法:

import shutil
shutil.copy("/file.dat", "t.dat")

如果操作的是二进制非文本文件,把打开模式换成rb、wb,去掉encoding参数即可。

方案2:特殊场景需调用shell执行(不推荐)

如果确实有必须通过shell命令写入的场景,需要先对写入内容做shell转义,避免特殊字符被解析:

import os
import shlex

with open("/file.dat", "r", encoding="utf-8") as fr:
    f = fr.read()

# 用shlex.quote转义内容,避免shell解析特殊字符
cmd = f"echo {shlex.quote(f)} >> t.dat"
os.system(cmd)

该方案性能远低于原生写入,仅作为特殊场景参考。

内容的提问来源于stack exchange,提问作者Yael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:54:03