2017-08-05 119 views
2

我需要使用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'

+0

path.join?路在哪裏? –

+0

@UbdusSamad編輯:'從os導入路徑'是在代碼中,但我忘記了在這裏包括它。現在修復。 – mareoraft

+1

你試過tfile.flush()嗎? –

回答

0

使用,

file_obj.flush()

在你的情況,你將不得不使用

tfile.flush() 

它會寫入到文件上被稱爲當!

+0

閱讀評論,我建議他也關閉它,但是,無論他爲他工作的是我的朋友的回答! –

+1

@SergeBallesta我相信'tfile.close()'不起作用,因爲'tempfile'在關閉後刪除文件 – mareoraft

+1

@SergeBallesta另外,如果列出哪些操作系統會給出問題,這只是有用的信息。[tempfile](https://docs.python.org/3.5/library/tempfile.html?highlight=tempfile# module-tempfile)文檔只提到Windows NT或更高版本會出現問題。 – mareoraft