-1

我从 git 下载了一个旧的代码(zip)文件。现在我想将文件夹位置引用为加载路径,以便我可以使用代码拆分 zip,但我可以看到拆分错误即将到来。我试过的代码是

$LOAD_PATH.unshift('c:/rubyzip/lib/zip')
require 'zip/zip'
part_zip_count = Zip::ZipFile.split("C:\junk\AWS Tools.zip", 10240, false)
puts "Zip file splitted in #{part_zip_count} parts"

使用 $LOAD_PATH.unshift 是否正确?有什么帮助吗?如何将文件夹的位置称为加载路径?

4

1 回答 1

0

问题似乎与require您的脚本部分无关。

有几种不同的方法可以将文件夹添加到您的文件夹中,$LOAD_PATH并且.unshift是其中之一。$LOAD_PATH是一个数组,所以$LOAD_PATH << 'C:/Folder/'也可以。

您提到您收到有关split. 这告诉您脚本通过了该require部分。因此,您的问题出在脚本的其他区域。

检查文档Zip::Zipfile,您会注意到该类没有方法.split。我建议阅读文档以了解满足脚本需求的可能方法。也许.extract是你正在寻找的。

一旦确定了正确的方法并进行了重构,您将遇到另一个问题,即您希望与之交互的 zip 文件的路径。Windows 使用 \(反斜杠)作为路径分隔符。但是,Ruby 使用它作为转义字符。

puts "First line\nNext line"
#=>First Line
#=>Next Line

这意味着 Ruby 将尝试找出\j'C:\junk' 中的含义。您可以通过两种方式解决此问题。

  1. 使用正斜杠。"C:/junk/AWS tools.zip".
  2. 用于File.join构建路径。File.join("C:", "junk", "AWS tools.zip"). 这样做意味着您不必担心 Ruby 认为什么是路径分隔符,什么不是。它会替你担心的。
于 2013-06-05T14:46:51.010 回答