我最近被downvoted(这只是让我有点误以为:))我给this question的答案。这个人没有提供对投票的解释,这让我开始思考:“你为什么要避免制作中间文件?”特别是在Python这样的语言中,文件IO很容易使用。
似乎一致认为这是一个坏主意,但我知道中间文件在实践中经常使用。我曾在一家非常备受推崇的研究公司工作(如果没有这家公司,我们就说S.O.不会存在),假设您的程序会将文件作为输出。我们这样做是因为如果你的程序确实当之无愧是一个独立的程序,那么它需要可调试的输出和一些在进程之间传递其输出的方法,以后我们在输出中发现错误时可以检查它们进一步下游。
使用中间文件是否被视为不良做法(如上所述的问题)?为什么呢?
答案 0 :(得分:2)
多线程时会发生中间文件的一个问题。
如果客户端C1和C2由服务器进程S同时处理(可能与否分离成单独的进程,使用的线程或任何并发系统......),当两者都尝试创建相同的中间体时,您可能会遇到奇怪的问题文件。
我相信Unix的哲学之一是所有程序都应该充当过滤器,但这并不一定意味着在磁盘上创建文件,并且在我看来使用中间文件会导致笨拙的行为。人们还应该将磁盘视为最后的手段,并且仅将其用于存储/检索关闭计算机后应该可用的数据,甚至可以使用程序在只读介质上运行。
答案 1 :(得分:1)
嗯,使用文件时会出现一些问题,尤其是在访问或创建文件时可能会出现许多意外故障。以下列出的是我个人经历过的所有问题。
1)文件位置在远程计算机上,网络已关闭。 (NFS安装)。
2)创建文件时没有足够的可用空间
3)在进程之间,用户按Ctrl-C取消进程,文件不会被删除
4)文件安装在NFS上,网络速度很慢
5)创建文件的文件夹是软链接,原始链接已删除。
但我们仍然需要使用文件,因为在bash中工作时几乎没有任何选项。但在C,C ++中我认为磁盘访问应该被视为最后的手段。如果这是与用户通信的唯一方式,则程序生成文件作为输出是可以的。但至少应该最小化中间节省使用磁盘文件。
答案 2 :(得分:0)
如果您正确创建临时文件(设置特定于平台的'临时'标志意味着在没有紧急需要时不将磁盘刷新到磁盘),如果任务需要它们,它们就非常好。
在有充分理由的情况下,IT中几乎没有任何东西是你无法使用的。 : - )