python - 在python中使用os.system()来执行linux命令

标签 python linux imap ls os.system

我在 python 中使用脚本从 Postfix 服务器获取邮件。此脚本获取邮件,删除标题并仅留下电子邮件正文。然后它使用这个主体通过 os.system() 执行 linux 命令。例如,我正在发送带有 mkdir 文件夹 的电子邮件,脚本会创建它。

问题出在我通过邮件发送 ls 时。我得到了响应 : not found ls

第二个问题是 mkdir,因为它将 ^M 添加到电子邮件的名称中。例如,我发送了 mkdir folder 并创建了“folder?”。

你有什么想法吗?

最佳答案

您已经确定了问题所在:电子邮件中包含您意料之外的 ^M 个字符。 (CR LF 是一种常见的行结束约定;Unix 通常不喜欢 CR)。

尝试从您的命令中删除“\r”:command = command.translate(None, "\r") .

我还敦促您仔细考虑运行通过电子邮件发送的任何命令的安全隐患。可能有更安全的方法来完成您想要完成的任务。

关于python - 在python中使用os.system()来执行linux命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555814/

相关文章:

c++ - 如何使用 popen() 重定向 stderr 并在后台运行?

Python 网页抓取

python - 解析字符串列表并根据这些字符串的切片返回连接的字符串的最佳方法是什么?

python - 如何将 "weak link"发送到 Mac OS X 上的 Python 框架?

python - 将动态python对象转换为json

mysql - 使用 iptables 和不同的网络接口(interface)转发 MySQL 连接

linux - localhost 重定向到 http ://www. localhost:8000/

php - IMAP 已安装但无法工作?

imap - 根据收到日期需要 IMAP 收件箱搜索方面的帮助

python - imap - 如何删除消息