首页 > 解决方案 > Python subprocess.call 与 python shell 的运行方式不同

问题描述

我正在尝试将 2 个 python 脚本(before.py 和 after.py)合并为一个,因为我需要为 python 脚本设置一个 cron 作业以在一次执行中运行这两个脚本。

这两个脚本连接在一起,其中由after.py (tmp1.txt)处理的文件由before.py生成。

脚本的原始顺序是

python3 before.py someCsv.csv > tmp1.txt
python3 after.py tmp1.txt >tmp2.txt

在 before.py 中,我添加了这个 subprocess.call(' python3 after.py tmp1.txt > tmp2.txt', shell=True)

我相信这将允许在 python 中执行运行 shell 命令。

在此处输入图像描述

如果我直接运行脚本(after.py),它会返回 44,623 条记录。但是如果我通过 subprocess.call() 在 before.py 中运行 after.py,它只返回 44,619 条记录。

我在两个脚本中使用相同的文件,即 tmp1.txt。

我尝试了 subprocess.call()、subprocess.run() 和 os.system()。看来我在这里做错了什么。

标签: pythonsubprocess

解决方案


我没有在 python shell 中通过 ">" 将结果输出到新文件,而是在 before.py 中创建了一个新文件,它保证在 after.py 将运行之前,tmp1.txt 已完成 100%。这使我能够获得完整的 44,623 条记录。

这是 before.py 的结尾。我没有直接输出到 python shell 中的文件,而是在脚本本身中创建了文件。 在此处输入图像描述


推荐阅读