Ruby(1.8.1)--存在ERRNO::EEXIST文件

Ruby(1.8.1)--存在ERRNO::EEXIST文件,ruby,file,Ruby,File,所以我和Ruby一起工作,而且。。。 我有一个错误,ERRNO::EEXIST,脚本“text”第2行。。。文件存在 如果创建的目录(在EGGPATH中定义)已经存在,则会发生错误,因为除非File.exist?(EGGPATH) 而我想做的是: def cyhm #file text Dir.mkdir(EGGPATH) unless File.exist?(EGGPATH) File.open(EGGPATH + "/CAN YOU HEAR ME.txt", "w+") do

所以我和Ruby一起工作,而且。。。 我有一个错误,
ERRNO::EEXIST,脚本“text”第2行。。。文件存在
如果创建的目录(在EGGPATH中定义)已经存在,则会发生错误,因为
除非File.exist?(EGGPATH)
而我想做的是:

def cyhm   #file text
  Dir.mkdir(EGGPATH) unless File.exist?(EGGPATH)
  File.open(EGGPATH + "/CAN YOU HEAR ME.txt", "w+") do |f|
    f.write("text")
  end
end
def cyhm_pt2
  Dir.mkdir(EGGPATH) unless File.exist?(EGGPATH)
  if File.exists?(EGGPATH + "/CAN YOU HEAR ME.txt") == false
    cyhm
  end
  File.open(EGGPATH + "/CAN YOU HEAR ME.txt", "a+") do |f|
    f.write("text2")
  end
end
虽然此处定义了EGGPATH,但在另一个文件中:

TXTLIST = ["Ą", "ą", "Ć", "ć", "Ę", "ę", "Ł", "ł", "Ń", "ń", "Ó", "ó", "Ś", 
"ś", "Ź", "ź", "Ż", "ż"] #file randomtxt
EGGPAT = TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + 
TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + 
TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + 
TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + 
TXTLIST[rand(TXTLIST.size)] + TXTLIST[rand(TXTLIST.size)] + 
TXTLIST[rand(TXTLIST.size)]
if File.exists?(SAVEPATH + "\\MODAR\\eseggdir.es") == false
  File.open(SAVEPATH + "\\MODAR\\eseggdir.es", "w+") do |f|
    f.write(EGGPAT)
  end
end
EGGPATH = File.read(SAVEPATH + "\\MODAR\\eseggdir.es")

另外,不要告诉我切换到更新版本的Ruby,因为我正在使用RPGXP,而且我不想很快更改它…

您会收到该错误,因为您的系统上不存在目录
MODAR
。下面的内容应该可以解决这个问题:

modar_path = File.join(SAVEPATH, 'MODAR')

unless Dir.exists?(modar_path)
  Dir.mkdir(modar_path)
end
还有一个命令可能会起作用:

require 'fileutils'
# replace modar_path with the path you choose, or set it as I did above
FileUtils.mkdir_p(modar_path)

因此,我发现Ruby无法忍受检查文件名中包含除英文字母以外的字符。羞耻。这就是解决方案,我必须重新创建TXTLIST数组以:
TXTLIST=[“A”、“b”、“C”、“D”、“e”、“F”、“g”、“H”、“i”、“J”、“k”、“L”、“m”、“N”、“o”、“P”、“r”、“S”、“t”、“U”、“w”、“y”、“y”、“X”、“Q”、“v”、“A”、“b”、“C”、“D”、“e”、“F”、“g”、“H”、“i”、“J”、“k”、“L”、“m”、“N”、“P”、“r”、“S”、“t”、“U”、“w”、“y”、“X”、“z”、“Q”、“Q”、“v”]
或类似的东西。

你有什么问题吗?…..有。事实上,如果问题不明显,如何解决。你能用清晰、明确的语言解释问题和你的问题吗?并且可以帮助你制定你的问题。你也应该这么做。@Akino“问题”并不明显。您正在描述一种行为,这种行为是在编写此代码时可以预料到的。问题的措辞很糟糕。另外,运行这个(稍微修改一下,从第一个文件到第二个文件的路径是共享的),一切都按照预期工作,所以不清楚您在问什么。如果我必须在黑暗中拍摄,我会选择“路径问题”,因为你是如何用“\”逃离路径的。您可以尝试使用连接进行路径连接