python - 使用 echo 写入文件的换行符在 shell 中有效,但在 Python 3 中为文字

标签 python python-3.x bash ubuntu posix

我在 Ubuntu 20.04 系统,我正在使用 Python 3.8 编写一个使用可配置的 bash 行执行多项操作的脚本,但其中之一是它创建桌面快捷方式。
这个单行命令创建一个桌面快捷方式,当我直接在我的终端中执行它时,它可以完美运行 :

echo "[Desktop Entry]"$'\n'"Type=Application"$'\n'"Name[en_US]=Documents"$'\n'"Exec=pcmanfm ~/Documents"$'\n'"Icon=system-file-manager" > ~/Desktop/1;
但是,当我在 Python 中执行它时,如下所示:foobar.py
rl = """echo "[Desktop Entry]"$'\n'"Type=Application"$'\n'"Name[en_US]=Documents"$'\n'"Exec=pcmanfm ~/Documents"$'\n'"Icon=system-file-manager" > ~/Desktop/1;"""
subprocess.run(rl, shell=True)
...而不是使用正确的名称、图标和操作创建桌面快捷方式,它会创建一个包含以下文本的空文件 :0.txt :
[Desktop Entry]$\nType=Application$\nName[en_US]=Sign Out$\nExec=/home/agent/QaSC/login/login.bin$\nIcon=system-switch-user
是否有任何特殊原因导致 Python 处理换行符的方式与 bash shell 不同,如果是,我该如何解决这个问题?

最佳答案

$'...'bash扩展名,但 shell=True 时使用的默认 shell指定为 sh .使用 executable用于指定备用外壳的选项。

subprocess.run(rl, shell=True, executable='/bin/bash')

关于python - 使用 echo 写入文件的换行符在 shell 中有效,但在 Python 3 中为文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72520380/

相关文章:

python - CNN - 多类分类的错误预测

python - 防止 SQLAlchemy 自动设置 IDENTITY_INSERT

python - 可以推断或暗示 numba 本地人的类型吗?

python - 如何在python 3上生成正弦波音调

python - Pandas 的 EMA 与股票的 EMA 不匹配?

bash - 在 Bash 中将 clear 绑定(bind)到 ^l

来自变量的 Bash 别名

python - 在字典中找到一个值?

bash - ffmpeg:通过 bash 从数组构建命令时没有此类文件错误

python - Pandas 替换不会替换换行符 - 为什么?