我正在尝试逐行读取具有字符串值的文件,并为每个字符串值创建相应的文件夹/目录。
#require 'fileutils'
value=File.open('D:\\exercise\\list.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
line.chomp
print "FOlder names:#{line}"
Dir.mkdir("D:\\exercise\\#{line}")
end
我收到以下错误:
read_folders_svn.rb:8:in `mkdir': Invalid argument - Australia (Errno::EINVAL)
from read_folders_svn.rb:8:in `block in <main>'
list.txt文件内容如下
Australia
USA
EUrope
Africa
ANtartica
我尝试打印值及其工作正常,同时创建面临上述问题的相应目录,甚至尝试使用 fileutils (fileutils.mkdir) 选项,但仍然是同样的问题。
请提出任何建议。谢谢
最佳答案
错误在行中:
line.chomp
它从 line
的尾部去除换行符并返回一个被忽略的值。它不会更改 line
的值。它仍然以 "\n"
结尾,这是 Windows 文件名中不允许使用的字符。该代码在 Linux 上运行良好,并创建名称以 "\n"
结尾的目录。
解决方法也很简单。使用 #chomp!
相反:
#require 'fileutils'
value=File.open('D:\\exercise\\list.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
line.chomp!
print "FOlder names:#{line}"
Dir.mkdir("D:\\exercise\\#{line}")
end
(但是,由于输入中有空行,它可能仍会产生错误)。
关于Ruby 无法创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43886421/