gpt4 book ai didi

ruby - 当所有文件都没有类型时更改 Ruby 中的文件名?

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:18 24 4
gpt4 key购买 nike

我有一个目录,其中包含 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

我已经 p'd f 确认一切正常,但是线路

File.rename(f,f+".csv")

抛出错误:“在 ‘rename’ 中:没有这样的文件或目录... (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com