【问题标题】:Write to temp file and read from command line写入临时文件并从命令行读取
【发布时间】:2017-08-05 03:14:38
【问题描述】:

我需要使用 python3 将一个临时文件写入 n*x 机器,以便我可以从命令行读取它。

import tempfile
import subprocess
from os import path

string = 'hi *there*'

# run markdown server-side
tfile = tempfile.NamedTemporaryFile(mode='w+', suffix='.txt', prefix='prove-math-')
tfile.write(string)
fpath = tfile.name
markdown_path = path.join(LIB_DIR, 'Markdown.pl')
command = [markdown_path, fpath]
completed_process = subprocess.run(command, check=True, stdout=subprocess.PIPE)
string = completed_process.stdout.decode()
tfile.close()

print(string)

输出应该是'<p>hi <em>there</em></p>',但实际输出是'\n',这暗示我Markdown.pl将文件内容读取为'\n'

【问题讨论】:

  • path.join ?路径在哪里?
  • @UbdusSamad 编辑:from os import path 在代码中,但我忘记在此处包含它。现已修复。
  • 你试过 tfile.flush() 吗??
  • 我对tempfile模块了解不多,但是像普通文件一样写入数据是不是需要flush或正确关闭?
  • 来自tempfile 的文件句柄遵循与来自open(... 的文件句柄相同的规则。

标签: python python-3.x file-writing temp file-read


【解决方案1】:

使用,

file_obj.flush()

在你的情况下,你必须使用

tfile.flush()

它会在被调用时写入文件!

【讨论】:

  • 阅读cmets,我建议他也关闭它,但是,对他有用的就是我的朋友的答案!
  • @SergeBallesta 我相信tfile.close() 不起作用,因为tempfile 在关闭文件后会删除它。
  • @SergeBallesta 另外,如果您列出哪些操作系统会出现问题,这只是有用的信息。 tempfile 文档仅提到 Windows NT 或更高版本会出现问题。
猜你喜欢
  • 2020-03-06
  • 1970-01-01
  • 2017-02-20
  • 2014-03-10
  • 2015-10-21
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多