python - 如何在Python中使用shell命令分割文件

标签 python shell file amazon-web-services amazon-ses

我有一个脚本,可以生成日志文件,然后通过电子邮件发送该文件 (AWS SES)。

有时生成的文件会变得很大,并且由于 SES 的限制是 10MB,我需要在发送之前将文件拆分为较小的文件。 文件名定义:

import subprocess
import datetime

fileHandler = os.path.join('/tmp','error-' + datetime.datetime.utcnow().strftime('%Y-%m-%d') + '.log')

subprocess.Popen('split -b 9MB '+fileHandler)

当我执行这些行时,文件没有任何反应,并且我无法拆分它。我不确定如何在传递 python 变量(在本例中为 fileHandler 的变量)的同时执行 shell 命令

非常感谢任何建议。

最佳答案

根据子进程库的文档,我们必须以列表的形式传递参数,我一直使用它来运行shell命令,这可能是一个问题,只需尝试这个即可。还可以使用 MB 字节数代替 MB 关键字,即 9437184 表示 9MB。

subprocess.Popen(['split','-b','9437184',fileHandler])

希望它能成功..

此外 split 命令可能需要前缀来创建新文件。

split -b 22 newfile.txt new

它将文件 newfile.txt 拆分为三个单独的文件,分别称为 newaa、newab 和 newac...,每个文件包含 22 字节的数据。

所以你可能必须使用命令

subprocess.Popen(['split','-b','9437184',fileHandler,'anyprefix'])

关于python - 如何在Python中使用shell命令分割文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42765822/

相关文章:

java - java访问文件时出现错误

python - 通过 visual studio 代码的 python 扩展将 py.test 与 pytorch 项目一起使用时出现问题

python - 包含一列列表的 Pandas DataFrame 中的行重复 (Python3)

linux - 读取 shell 脚本中的行输出

python - 将 python 脚本输出重定向到 grep

c - 使用 fscanf 函数从 .csv 文件读取 int

python - 创建数据框中不存在的时间间隔

python - 在 redis-py 中使用锁

macos - ~/.bash_profile 别名中 pwd 的不同评估取决于引用类型

c - 从 C 文件中读取标记