You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby使用gets获取文件名读取文件时报Errno::ENOENT错误如何解决

问题根源

调用gets()获取用户输入时,会自动包含输入末尾的换行符\n:当你输入albums.txt后按下回车,file_name变量实际存储的值是"albums.txt\n",而非你预期的"albums.txt",系统自然找不到带换行符后缀的文件,因此抛出Errno::ENOENT错误。你硬编码文件名时没有附带换行符,所以可以正常运行。

修复方案

调用String#chomp方法去除输入末尾的换行符即可,修改后的代码如下:

# 先输出提示信息引导用户输入
print "请输入目标文件名:"
# 获取输入后直接删除末尾换行符
file_name = gets.chomp
# 不需要额外做字符串插值,直接传入变量即可
a_file = File.new(file_name, "r")

可选优化:可提前判断文件是否存在,避免程序直接崩溃:

file_name = gets.chomp
if File.exist?(file_name)
  a_file = File.new(file_name, "r")
  # 后续文件读取逻辑写在这里
else
  puts "输入错误:文件#{file_name}不存在,请检查文件名后重试"
end

内容的提问来源于stack exchange,提问作者Theo1290

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:24:03