我正在尝试逐行读取具有字符串值的文件,并为每个字符串值创建相应的文件夹/目录.
#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
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
read_folders_svn.rb:8:in `mkdir': Invalid argument - Australia (Errno::EINVAL)
from read_folders_svn.rb:8:in `block in <main>'
Run Code Online (Sandbox Code Playgroud)
list.txt文件的内容如下
Australia
USA
EUrope
Africa
ANtartica
Run Code Online (Sandbox Code Playgroud)
我尝试打印值及其工作正常,同时创建面临上述问题的相应目录,甚至尝试使用fileutils(fileutils.mkdir)选项,但仍然是同样的问题.
请给我任何建议.谢谢
错误在于:
line.chomp
Run Code Online (Sandbox Code Playgroud)
它从尾部剥离换行符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
Run Code Online (Sandbox Code Playgroud)
(但是,由于输入中的空行,它可能仍然会产生错误).
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |