[解決済み】そのようなファイルやディレクトリはありません @ rb_sysopen ruby
2022-02-01 15:17:33
質問
フォルダ内にファイルが存在するにもかかわらず、以下のような問題が発生します。
H:\Ruby_test_works>ruby hurrah.rb
hurrah.rb:7:in `read': No such file or directory @ rb_sysopen - H:/Ruby_
test_works/SVNFolders.txt (Errno::ENOENT)
from hurrah.rb:7:in `block in <main>'
from hurrah.rb:4:in `each_line'
from hurrah.rb:4:in `<main>'
入力ファイル(input.txt) カラムはタブ区切りです。
10.3.2.021.asd 10.3.2.041.def SVNFolders.txt
SubversionNotify Subversionweelta post-commit.bat
Commit message still rake customemail.txt
mckechney.com yahoo.in ReadMe.txt
コード:
dir = 'H:/Ruby_test_works'
file = File.open("#{dir}/input.txt", "r")
file.each_line do |line|
initial, final, file_name = line.split("\t")
#puts file_name
old_value = File.read("#{dir}/#{file_name}")
replace = old_value.gsub( /#{Regexp.escape(initial)}, #{Regexp.escape(final)}/)
File.open("#{dir}/#{file_name}", "w") { |fi| fi.puts replace }
end
フォワードスラッシュとバックスラッシュの両方を使用してみましたが、うまくいきません。何が足りないのか、よくわかりません。ありがとうございます。
puts file_name
を実行すると、以下のような値になります。
SVNFolders.txt
post-commit.bat
customemail.txt
ReadMe.txt
解決方法は?
その
file_name
は改行文字を含んでいます
\n
を末尾につけると、印刷されないがパスが乱れる。を削除することでこの問題を解決できます。
line
を最初に指定します。
initial, final, file_name = line.strip.split("\t")
コードのデバッグ時に注意するのは
puts
. その引用は
ドキュメンテーション
を見ると、醜い真実が見えてくる。
与えられたオブジェクトをiosに書き込みます。 改行で終わっていないものの後に改行を書きます。
別の言い方をすれば、オブジェクトの末尾にある(可能性のある)改行文字は無視されます。そのため、ファイル名が実際には
SVNFolders.txt\n
.
を使う代わりに
puts
を使用することができます。
p
は、トラブルシューティングの際に使用します。この2つを簡単に比較すると
puts
コール
to_s
と改行が追加されるのに対し
p
を呼び出します。
inspect
をオブジェクトに追加します。以下は、その違いについてもう少し詳しく説明します。
http://www.garethrees.co.uk/2013/05/04/p-vs-puts-vs-print-in-ruby/
関連
-
[解決済み】Ruby: 特定のバージョンのruby gemをインストールする方法は?
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み] Rubyで「例外 => e」を救済するのはなぜ悪いスタイルなのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】StringからIntegerへの暗黙の変換がない(TypeError)?
-
[解決済み] Rubyでファイル名を変更するには?
-
[解決済み] git, Heroku: pre-receive フックの減少
-
[解決済み] Ruby の .reject! と .delete_if の比較
-
[解決済み] Ruby - 文字列を日付に変換する
-
[解決済み] ルビースリープやディレイは1秒以下?
-
[解決済み] rubyでディレクトリからすべてのファイルを要求する最良の方法?
-
[解決済み] .rb(Ruby)ファイルを表示するにはどうすればよいですか?
-
[解決済み] rvmのインストールがうまくいきません。"RVMは機能ではありません"
-
[解決済み] Rubyで指定されたディレクトリが存在するかどうかを確認する方法