python - 无法读取 python 临时文件

标签 python file-io

我有以下代码,但遇到问题。

import os
import tempfile
import subprocess

def list_pids(pid):
  if pid == "" or pid == None:
    return False

  command = ["ps", "-U", "%s" % os.getuid(), "-o", "pid"]
  tmp = tempfile.NamedTemporaryFile(delete=False)
  process = subprocess.Popen(command, stdout=tmp)
  tmp.seek(0) # hacky. but have to do it
  print tmp.tell()
  line = tmp.read()
  print tmp.tell()
  tmp.close()
  print tmp.name

这段代码的目的是做一件简单的事情,获取当前用户的所有 PID 并将输出转储到指定的临时文件中。

程序的输出是:

0 # initial tell()
0 # tell() after read()
/tmp/tmp8DoUZj # name of named file

有人可以弄清楚这里出了什么问题吗?输出转储到 /tmp/tmp8DoUZj 中,但我无法在 python 中读取它

感谢帮助

最佳答案

在读取临时文件之前调用 assert process.wait() == 0

如果没有这个,您的 Python 程序读取临时文件的速度会比 ps 填充临时文件的速度快。

仅供引用,通常您不需要临时文件来读取子进程的标准输出。使用 stdout=subprocess.PIPE 创建它,并使用例如process.communicate() 读取其输出。

关于python - 无法读取 python 临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251152/

相关文章:

python - 为什么我的 Django 迁移会加载我的 urls.py?

python - 样式表未从 Django 中的相对路径加载

java - 如何将从数据库获取的值存储到文本文件中

java - Java 中文件中的数组数组

c# - 如何在 C# 中强制解锁文件?

Python 参数解析 : list individual choices in the usage

python - 我需要在 SVM 中计算预测时间的历史记录吗?

python - 如何在 matplotlib 条形图中添加颜色?

c - 手册 "encryption"只输出0到文件

android - 在外部存储上创建新文件时权限被拒绝