【问题标题】:create file in different directories with ruby使用 ruby​​ 在不同目录中创建文件
【发布时间】:2016-02-12 11:00:43
【问题描述】:

我是红宝石新手。实际上我正在尝试在以下每个目录中创建一个空文件“myfile.txt”:

../../../../../TESTS/Test_A/myTest_A/
../../../../../TESTS/Test_B/myTest_B/
../../../../../TESTS/Test_C/myTest_C/
../../../../../TESTS/Test_D/myTest_D/

如您所见,Top 目录的名称是“TEST”,之后,每个目录都有不同的名称,但以“Test_”开头,并且每个“Test_*”目录只包含一个目录,并且我的文件应该进入。我正在尝试这样的事情:

require 'pathname'

def create_myFile
  pn = Pathname.new('../../../../../TESTS/Test_*/**')
  myFile = File.new("#{pn}/myFile.txt", "w+")
end
create_myFile

它不起作用。有什么建议吗?

【问题讨论】:

  • 在 Ruby 中:最佳实践是在方法名称和实例变量中使用下划线分隔的小写单词。所以用def create_my_file创建方法并使用实例变量my_file

标签: ruby-on-rails ruby regex rake require


【解决方案1】:

Pathname 不接受通配符。 Dir#[] 确实:

Dir['../../../../../TESTS/Test_*/**'].each do |dir|
  File.new File.join(dir, 'myFile.txt'), 'w+'
end

【讨论】:

  • 顺便说一句,我也想在创建的文件中写入一些东西,我正在尝试使用 open('myfile.txt', 'w') do |f| f.puts "This is my string" (这是 File.new File.join 之后的下一行......)但它不接受它?
  • File.open('/tmp/a.txt', 'w+') do |f| f.puts "HELLO" end ⇐ 加上'w+' 是必需的,因为该文件已经存在并且应该使用File.open
  • 试过了,还是没有写入文件
  • @milexy86 请不要编辑答案,更改原始代码。您应该用真实的文件名替换文件名,显然是File.join(dir, 'myFile.txt')。如果您有任何其他问题,除了上述,已经完美回答,请问另一个问题
猜你喜欢
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
相关资源
最近更新 更多