【发布时间】:2021-12-31 20:48:44
【问题描述】:
即使文件存在于文件夹中,也面临以下问题。
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
【问题讨论】:
-
在输入文件中,提到的文件名有空格,如“SVN Folders.txt”,但在错误中,同一文件读为“SVNFolders.txt”。你的文件名有空格吗?
-
让我直说...
H:/Ruby_test_works:input.txt中只有 一个文件。该文件包含四行文本,每行以另一个文件名结尾。然后您尝试打开该文件...但是该文件不存在。这是您的错误信息。没有像H:/Ruby_test_works/SVNFolders.txt这样的文件。那么你的问题到底是什么? -
@Ucpuzz :抱歉,这是一个复制和粘贴问题。文件没有命名空间
-
@TomLord :如果问题令人困惑,我深表歉意。 input.txt 文件有 3 列,例如第 1 列 - 现有值,第 2 列:要替换的值,第 3 列是必须进行替换的文件名。下面有 5 个文件:
H:/Ruby_test_works包括input.txt> 我正在循环遍历 input.txt 的每一行,并获取要在其他 4 个文件上替换的值。 -
您是否尝试在第 7 行使用
File.open而不是File.read?另外我在File.read上找不到文档。您使用的是什么版本的 ruby?
标签: ruby