Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中顺序创建多个CSV文件?_Ruby_Csv - Fatal编程技术网

如何在Ruby中顺序创建多个CSV文件?

如何在Ruby中顺序创建多个CSV文件?,ruby,csv,Ruby,Csv,愚蠢的问题,但我想对数据集进行一些处理,并将它们放入不同的csv中,如UDID1.csv,UDID2.csv,…,UDID1000.csv。这是我的代码: for i in 1..1000 logfile = File.new('C:\Users\hp1\Desktop\Datasets\New File\UDID#{i}\.csv',"a") #I'll do some processing here end 但是程序在运行时抛出一个错误,因为UDID{i}部分。那么,如何克

愚蠢的问题,但我想对数据集进行一些处理,并将它们放入不同的csv中,如
UDID1.csv
UDID2.csv
,…,
UDID1000.csv
。这是我的代码:

for i in 1..1000
    logfile = File.new('C:\Users\hp1\Desktop\Datasets\New File\UDID#{i}\.csv',"a")
    #I'll do some processing here
end
但是程序在运行时抛出一个错误,因为
UDID{i}
部分。那么,如何克服这个问题呢?谢谢

编辑:这是错误:

in `initialize': No such file or directory @ rb_sysopen - C:\Users\hp1\Desktop\Datasets\New File\udid#{1}\.csv (Errno::ENOENT)from C:/Ruby21/bin/hashedUDID.rb:38:in `new' from C:/Ruby21/bin/hashedUDID.rb:38:in '<main>'
在'initialize'中:没有这样的文件或目录@rb_sysopen-C:\Users\hp1\Desktop\Datasets\New file\udid{1}\.csv(Errno::enoint)来自C:/Ruby21/bin/hashedudo.rb:38:in'New'来自C:/Ruby21/bin/hashedudo.rb:38:in''
{}
只能在带有双引号的字符串中使用

for i in 1..1000
  logfile = File.new("C:\Users\hp1\Desktop\Datasets\New File\UDID#{i}\.csv","a")
  # other stuff
end

当需要字符串插值时,必须使用双引号(“)

这个
是一个问题,另一个问题是路径

在发布中,
新文件
必须作为目录存在。此目录中必须存在另一个目录,如
udid001
。这将获取一个
.csv
文件

正确的是(我不使用非rubyesk for循环):

内部,必须屏蔽反斜杠(
\\
)。您可以使用
/

logfile = File.new("C:/Users/hp1/Desktop/Datasets/New File/UDID#{i}/.csv", "a")
另一种可能是使用
%i
插入数字:

    logfile = File.new("C:/Users/hp1/Desktop/Datasets/New File/UDID%02i/.csv" % i, "a")
我更喜欢使用
打开
,然后在块的末尾关闭文件:

    File.open("C:/Users/hp1/Desktop/Datasets/New File/UDID%04i/.csv" % i, "a") do |logfile|
      #I'll do some processing here
    end #closes the file
警告:

我不确定,如果您真的想创建1000个日志文件(该文件在循环中打开,因此每个步骤都会创建一个文件)。
如果是,那么
%04i
-版本有一个优点,即文件的位数都相同(从
0001
开始,以
1000
结束)。

这如何增加我现有的答案?除了
{}
不是一个构造函数:)好的,那就行了!谢谢!至于我为什么需要这个,实际上我的原始问题可以在这里找到:所以,因为散列数组不能存储这么多的值,我想把我的数据集划分成更小的可管理块,对它们进行散列,将它们存储在单独的CSV文件中(这就是这个问题),&然后将其与后续哈希进行比较。如果此答案解决了您的问题,您应该接受该答案。对于彻底解决方案+1
    logfile = File.new("C:/Users/hp1/Desktop/Datasets/New File/UDID%02i/.csv" % i, "a")
    File.open("C:/Users/hp1/Desktop/Datasets/New File/UDID%04i/.csv" % i, "a") do |logfile|
      #I'll do some processing here
    end #closes the file