我有一个读取输入测试文件的函数,以便我可以进行进一步处理。出于某种原因,它将我的r视为回车\r
def main
#format input
input = []
File.foreach(ARGV[0], 'r') do |f|
puts "f is #{f}"
break
end
end
main()
testfile.csv
149
u,6,3
b,11,11
r,10,11
h,4,8
t,4,5
v,7,9
但是,无论何时在我的测试文件中遇到r,都不会读入其他输出。由于某种原因,r被视为回车\r
命令行
> ruby bst.rb testfile.csv
f is 149
u,6,3
b,11,11
r
答案 0 :(得分:2)
查看http://agora.encreation.com/wp-content/uploads/portfolio-immobiliere-pujol-thumb.jpg的文档。第二个参数是用于拆分行的分隔符,不文件的打开模式(它也可以是限制 - 要返回的最大长度字符串)。
这意味着在您对SelectedItems
的调用中,您要求Ruby从由ListBox
字符分隔的文件中返回字符串,这正是您所看到的。
解决方案是删除foreach
,只读模式是默认模式,因此您不需要它:
r
答案 1 :(得分:1)
请尝试以下方式
File.foreach("C:/Users/rajarshi.das/Desktop/abc.csv","rb") do |f|
puts "f is #{f}"
break
end
输出
>> f is 149
u,6,3
b,11,11
r,10,11
h,4,8
t,4,5
v,7,9
替换r
模式以使用rb
模式或r+
模式
File.foreach("C:/Users/rajarshi.das/Desktop/abc.csv","rb")
或
File.foreach("C:/Users/rajarshi.das/Desktop/abc.csv","r+")
答案 2 :(得分:0)
我不知道为什么File.foreach
在回车上分裂,也不知道为什么在那里找到一个。{1}}。但从功能上讲,你所做的只是阅读文件的文本,为此有其他选择:
puts File.read("test.csv")
# or
File.open("test.csv", "r") { |f| puts f.read }