如何在 python 中使用 shell 命令拆分文件
How to split a file using shell commands in python
我有一个生成日志文件然后通过电子邮件 (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 命令
非常感谢任何建议。
根据子流程库的文档,我们必须以 list 的形式传递参数,我一直使用 运行 shell命令,这可能是个问题,试试这个吧。还使用 MB 中的字节数而不是 MB 关键字,即 9437184 表示 9MB。
subprocess.Popen(['split','-b','9437184',fileHandler])
希望它会起作用..
此外,拆分命令可能需要前缀才能创建新文件。
split -b 22 newfile.txt new
它将文件 newfile.txt 分成三个单独的文件,分别称为 newaa、newab 和 newac...,每个文件包含 22 个字节的数据。
所以你可能需要使用命令
subprocess.Popen(['split','-b','9437184',fileHandler,'anyprefix'])
我有一个生成日志文件然后通过电子邮件 (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
的变量)
非常感谢任何建议。
根据子流程库的文档,我们必须以 list 的形式传递参数,我一直使用 运行 shell命令,这可能是个问题,试试这个吧。还使用 MB 中的字节数而不是 MB 关键字,即 9437184 表示 9MB。
subprocess.Popen(['split','-b','9437184',fileHandler])
希望它会起作用..
此外,拆分命令可能需要前缀才能创建新文件。
split -b 22 newfile.txt new
它将文件 newfile.txt 分成三个单独的文件,分别称为 newaa、newab 和 newac...,每个文件包含 22 个字节的数据。
所以你可能需要使用命令
subprocess.Popen(['split','-b','9437184',fileHandler,'anyprefix'])