所以我有以下小脚本来设置文件,以便组织我们得到的报告。
#This script is to create a file structure for our survey data
require 'fileutils'
f = File.open('CustomerList.txt') or die "Unable to open file..."
a = f.readlines
x = 0
while a[x] != nil
Customer = a[x]
FileUtils.mkdir_p(Customer + "/foo/bar/orders")
FileUtils.mkdir_p(Customer + "/foo/bar/employees")
FileUtils.mkdir_p(Customer + "/foo/bar/comments")
x += 1
end
一切似乎都在while
之前发挥作用,但我一直在努力:
'mkdir': Invalid argument - Cust001_JohnJacobSmith(JJS) (Errno::EINVAL)
这是CustomerList.txt
的第一行。我是否需要对数组条目执行某些操作才能将其视为字符串?我是不匹配的变量类型还是什么?
提前致谢。
答案 0 :(得分:1)
以下对我有用:
IO.foreach('CustomerList.txt') do |customer|
customer.chomp!
["orders", "employees", "comments"].each do |dir|
FileUtils.mkdir_p("#{customer}/foo/bar/#{dir}")
end
end
有这样的数据:
$ cat CustomerList.txt
Cust001_JohnJacobSmith(JJS)
Cust003_JohnJacobSmith(JJS)
Cust002_JohnJacobSmith(JJS)
使一些东西更像红宝石的方式:
在打开文件或迭代数组时使用块,这样您就不必担心关闭文件或直接访问数组。
正如@inger所指出的,本地变量从小写客户开始。
当你想要一个字符串中的变量值时,#{}比使用+连接更加rubinic。
另请注意,我们使用chomp取消了尾随换行符! (它将var更改到位,由方法名称上的尾随!标记)