我有一些作业要完成。我不想要答案。我只是在开始时遇到了麻烦。我尝试过的工作根本不起作用......有人可以插入正确的方向吗?我正在努力学习,但在尝试和尝试之后,我需要一些帮助。
我知道我可以使用 os.path.basename()
来获取基本名称,然后将其添加到文件名中,但我无法将它们组合在一起。
这是任务
在此项目中,编写一个函数,该函数采用目录路径并仅创建该目录的存档。例如,如果使用与示例 ("c:\\xxxx\\Archives\\archive_me")
相同的路径,则 zipfile 将包含 archive_me\\groucho
、 archive_me\\harpo
和 archive_me\\chico
。
基目录(上例中的 archive_me
)是输入的最后一个元素,zipfile 中记录的所有路径都应以基目录开头。
如果目录包含子目录,则不应包含子目录名称和子目录中的任何文件。 (提示:您可以使用 isfile()
来确定文件名是否代表常规文件而不是目录。)
再次感谢任何方向都会很棒。
最佳答案
了解您自己尝试过的内容会有所帮助,因此我仅提供了一些指向标准库中方法的指针:
os.listdir
获取给定目录下的文件和文件夹列表(注意,它只返回文件/文件夹名称,而不是完整路径!) os.path.isfile
如作业中所述,用于检查给定路径是否代表文件或文件夹 os.path.isdir
,os.path.isfile
的反面(感谢 inspectorG4adget )os.path.join
将文件名与 basedir 连接在一起,而不必担心斜线和分隔符 ZipFile
用于处理压缩文件 zipFile.write
将找到的文件写入 zip 我不确定您是否需要所有这些,但知道它们存在并没有什么坏处。
关于python zipfile 基本名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13505569/