ファイルを作成しようとしています。このファイルには、処理する必要があるすべてのファイルをスクリプトに入れ、そのファイルをパラメーターとして渡します。私の問題は、リストがバッファを埋めるのに十分な長さではなく、ディスクに何も書き込まれないことがあることです。一時ファイルをフラッシュして fsync しようとしましたが、何も起こりません。スクリプトはサード パーティのスクリプトなので、パラメーターの受け渡し方法を変更することはできません。
with tempfile.NamedTemporaryFile(bufsize=0) as list_file:
list_file.write("\n".join(file_list) + "\n")
list_file.flush()
os.fsync(list_file)
command = "python " + os.path.join(SCRIPT_PATH, SCRIPT_NAME) + " --thread --thread_file "
ppss_command = [SCRIPT_PATH + "/ppss", "-f", list_file.name, "-c", command]
p = subprocess.Popen(ppss_command)
out,err = p.communicate()
最終的なソリューション コード (jterrace の回答):
with tempfile.NamedTemporaryFile(delete=False) as list_file:
list_file.write("\n".join(file_list) + "\n")
list_file.close()
command = "python " + os.path.join(SCRIPT_PATH, SCRIPT_NAME) + " --thread --thread_file "
ppss_command = [SCRIPT_PATH + "/ppss", "-f", list_file.name, "-c", command]
p = subprocess.Popen(ppss_command)
out, err = p.communicate()
list_file.delete = True