【问题标题】:How do I refer a particular folder in Windows?如何在 Windows 中引用特定文件夹?
【发布时间】:2013-06-05 11:27:51
【问题描述】:

我从 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 是否正确?有什么帮助吗?如何将文件夹的位置引用为加载路径?

【问题讨论】:

  • 我收到错误,因为它引用新的 require 'zip/zip'...我想从 c:/rubyzip/lib/zip 引用 require 'zip/zip'
  • $LOAD_PATH.unshift 是正确的。但是,您在"C:\junk\AWS Tools.zip" 中使用的路径分隔符不正确。 \ 是一个转义字符。
  • 实际上,它不会到那里....错误来说明拆分对象不存在...它指的是不存在拆分的默认 zip/zip....
  • 你确定Zipfile 有一个split 方法吗?我查看了文档和源代码,但找不到对它的引用。
  • 你能提供确切的错误信息吗?

标签: ruby rubygems zip


【解决方案1】:

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

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

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

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

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

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

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

  1. 使用正斜杠。 "C:/junk/AWS tools.zip"
  2. 使用File.join 构造路径。 File.join("C:", "junk", "AWS tools.zip")。这样做意味着您不必担心 Ruby 认为什么是路径分隔符,什么不是。它会为你担心的。

【讨论】:

  • 嗨,查尔斯,你是对的。它们不是 zip::zipfile 中称为 Split 的方法。但在旧版本中,它具有拆分功能。链接是github.com/aussiegeek/rubyzip/blob/master/samples/example.rb 所以,我想用这个……我从 github 下载了这个,现在我想引用这个……你能帮忙吗?
  • 旧版本中没有.split 方法。不过,在 RubyZip 的下一个版本中将会有一个.split 方法。它在 2 个月前被添加到 GitHub 存储库中,仅在 3 天前对其进行了一些更改。他们甚至在自述文件的顶部说,“这个分支用于下一个版本的 ruby​​zip。不要在生产中使用它。Rubyzip 接口将被更改!!!”如果您真的想使用这个最前沿的版本,您可以下载代码,将其加载到$LOAD_PATH 并使用它。或者,从 GitHub 存储库安装 gem。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多