我有一个目录,其中包含 5 个没有文件类型的文件(也许它们的文件类型是“.txt” - 我不确定),名为“file1”、“file2”...
我尝试使用以下代码将它们转换为 CSV 格式:
require('fileutils')
folder_path = "correct_folder_path"
Dir.foreach(folder_path) do |f|
next if f == '.' || f == '..'
#confirm inputs are correct (they are)
#p f
#p f+".csv"
File.rename(f, f+".csv")
end
我已确认一切正常,但线路
File.rename(f,f+".csv")
抛出错误:“在‘重命名’中:没有这样的文件或目录... (Errno::ENOENT)”
有人知道为什么这不起作用吗?
最佳答案
带有目录和文件
您可以将目录更改为folder_path
。如果某些文件可能具有“.txt”扩展名,您需要先删除该扩展名,以免获得 .txt.csv
文件:
folder_path = "correct_folder_path"
Dir.chdir(folder_path) do
Dir.foreach(".") do |f|
next if File.directory?(f)
basename = File.basename(f, '.*')
new_file = basename + '.csv'
p f
p new_file
## Uncomment when you're sure f and new_file are correct :
# File.rename(f, new_file) unless f == new_file
end
end
带路径名
与 Pathname ,通常更容易过滤和重命名文件:
require 'pathname'
folder_path = "correct_folder_path"
Pathname.new(folder_path).children.each do |f|
next if f.directory?
p f
p f.sub_ext('.csv')
## Uncomment if you're sure f and subext are correct :
# f.rename(f.sub_ext('.csv'))
end
关于ruby - 当所有文件都没有类型时更改 Ruby 中的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41421123/