gpt4 book ai didi

ruby - 解压缩文件并忽略 OS X 添加的 'junk files'

转载 作者:数据小太阳 更新时间:2023-10-29 08:52:38 25 4
gpt4 key购买 nike

我正在使用如下代码在 Ruby 中解压缩文件:

def unzip_file (file)
Zip::ZipFile.open(file) do |zip_file|
zip_file.each do |f|
puts f.name if f.file?
end
end
end

我想忽略在 Mac 中由 compress zip 生成的所有文件,例如:.DS_Store 等。我怎样才能最好地做到这一点?

最佳答案

我相信这可以满足您的需求:

Zip::ZipFile.open(file) do |zip_file|
names = zip_file.select(&:file?).map(&:name)
names.reject!{|n| n=~ /\.DS_Store|__MACOSX|(^|\/)\._/ }
puts names
end

那个正则表达式说,

  • 丢弃文件
    • 名称中包含 .DS_Store
    • 名称中有__MACOSX
    • 或在名称 (^) 开头或紧跟在 / 之后的 ._

这应该涵盖所有“垃圾”文件,希望不会影响任何其他文件。

如果您想要的不仅仅是名称——如果您想要处理非垃圾文件——那么您可以改为执行以下操作:

Zip::ZipFile.open(file) do |zip_file|
files = zip_file.select(&:file?)
files.reject!{|f| f.name =~ /\.DS_Store|__MACOSX|(^|\/)\._/ }
puts files.map(&:names) # or do whatever else you want with the array of files
end

关于ruby - 解压缩文件并忽略 OS X 添加的 'junk files',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9092760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com