-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、その 1 つです。$LOAD_PATH配列なので、$LOAD_PATH << 'C:/Folder/'うまくいきます。

に関するエラー メッセージが表示されたとのことsplitでした。これは、スクリプトがそのrequire部分を通過したことを示しています。したがって、問題はスクリプトの他の領域にあります。

のドキュメントを調べると、そのクラスZip::Zipfileのメソッドがないことがわかります。.splitスクリプトのニーズを満たす可能なメソッドのドキュメントを読むことをお勧めします。おそらく.extractあなたが探しているものです。

適切な方法とリファクタリングを決定したら、対話する zip ファイルへのパスである別の問題に遭遇します。Windows では、\ (バックスラッシュ) をパスの区切り記号として使用します。ただし、Ruby はエスケープ文字として使用します。

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

\jこれは、Ruby が'C:\junk' の意味を理解しようとしていることを意味します。これは 2 つの方法で修正できます。

  1. スラッシュを使用します。"C:/junk/AWS tools.zip".
  2. File.joinパスを構築するために使用します。File.join("C:", "junk", "AWS tools.zip"). こうすることで、Ruby が何をパス区切りと見なし、何を考慮しないかについて心配する必要がなくなります。それはあなたのためにそれを心配します。
于 2013-06-05T14:46:51.010 に答える