使用Robot Framework,我正在尝试使用一个文件和三个包含文件的子目录来压缩目录.我正在使用ArchiveLibrary和关键字在目录中创建Zip From files.结果是一个压缩目录,其中包含顶层目录中的一个文件和三个空子文件夹.
如何调整库以便包含子文件夹的内容?
这是关键字最初定义的方式:
def create_zip_from_files_in_directory(self,directory,filename): ''' Take all files in a directory and create a zip package from them `directory` Path to the directory that holds our files `filename` Path to our destination ZIP package. ''' if not directory.endswith("/"): directory = directory + "/" zip = zipfile.Zipfile(filename,"w") files = os.Listdir(directory) for name in files: zip.write(directory + name,arcname=name) zip.close()
Link到完整的图书馆.
我一直在尝试os.walk,没有成功.
如何在.robot文件中使用关键字:
Zip xml file ${zipfilename}= set variable komplett.zip Create zip from files in directory ../xml/komplett/ ${zipfilename}
如果它有所不同,我真的只需要解决这个特定情况,而不是一般情况,这意味着我不介意输入每个目录的路径,然后以某种方式加入,我只是不明白该怎么做…
另外,我使用PyCharm作为编辑器,而不是RIDE.最佳答案编辑:当使用库版本0.4及更高版本时,您可以选择是否应包含子目录.例如.:
Create Zip From files In Directory ../xml/komplett/ no_sub_folders.zipCreate Zip From files In Directory ../xml/komplett/ dir_and_sub_folders.zip sub_directorIEs=${true}
创建tar的关键字有点不同 – 默认情况下它包含子目录中的文件,现在您可以选择不:
Create Tar From files In Directory ../xml/komplett/ dir_and_sub_folders.tar Create Tar From files In Directory ../xml/komplett/ no_sub_folders.tar sub_directorIEs=${false}
sub_directorIEs的默认值基于预先存在的行为,而不是破坏测试用例中的现有用法.
原始答案,版本< 0.4:如果您愿意修补库,此代码应该:
zip = zipfile.Zipfile(filename,"w")for path,_,files in os.walk(directory): for name in files: file_to_archive = os.path.join(path,name) # get rID of the starting directory - so the zip structure is top-level starting from it file_name = path.replace(directory,'') file_name = os.path.join(file_name,name) zip.write(file_to_archive,arcname=file_name) # set the desired name in the archive by the arcname argumentzip.close()
编辑:保留 – 子目录中文件的子目录结构.
生成的文件位于顶级目标目录及其所有子目录(位于其下方(与保留目标目录的完整路径的存档相对))
arcname argument controls什么是存档中存储的文件的名称 – 通过第7行,我们保留了相对目录和文件名.
始终使用os.path.join,因为它会自动处理不同文件系统(ntfs / linux / etc)中的差异.
如果最终解决方案适合您,请不要忘记向库所有者提出补丁 – 回馈社区:)
总结以上是内存溢出为你收集整理的python – 在Robot Framework中包含子目录的Zip目录全部内容,希望文章能够帮你解决python – 在Robot Framework中包含子目录的Zip目录所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)