在Python中将目录视为文件

时间:2018-10-31 19:46:56

标签: python python-2.7

我们有一个工具旨在允许供应商将文件传送给公司并更新其数据库。这些文件(通常是预定类型的文件)使用我们基于Web的传输系统,在数据库中为每个文件创建一个新记录,并在交付文件时将其移动到新结构中。

我们有一个来自客户端的新请求,要求使用此工具来传递整个目录而不解析每个记录。想象一下,如果客户制造了数字汽车,那么该工具将允许交付数字螺母和螺栓并跟踪每个零件,但是他们还希望提供一个目录,其中包含用于创建数字螺栓的所有资产,而无需将每个资产添加为资产。新记录。

问题在于原始代码没有一种好的方法来处理这些直通文件夹,并且需要大量重写才能使其正常工作。显然,我们需要创建一个在目录遍历时发生的新函数,该函数取出匹配此传递的每个文件夹,然后分别进行处理。问题在于,进行传输,数据库输入和传递的所有工具都需要文件,而不是文件夹。

我的想法:如果我们可以将整个文件夹视为文件怎么办?这样,当前的文件级工具无需修改,我们只需要添加“转换”步骤即可。生成清单后,如果我们使用库将其转换为“文件”,发送该文件,然后在摄取后将其转换回“文件夹”,该怎么办。最明显的方法是ZIP文件-当前的传送工具确实可以处理ZIP-但这很慢,其中一些传送非常大,这意味着在传输时如果 entire ZIP将失败。

是否有一种我们可以使用的方法,它不一定压缩文件,但可以以某种方式将目录及其所有内容视为文件,因此不需要重写其余代码?还是我完全想不到的其他东西?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用tar files。 Python对它有很好的支持,并且在* nix环境中习惯将它们用作备份文件。对于压缩,您可以使用Gzip(标准库也支持Gzip,非常适合流式传输)。