【问题标题】:Error in Ruby on windows 7 Errno::ENOENT:Windows 7 上的 Ruby 错误 Errno::ENOENT:
【发布时间】:2014-04-26 12:01:34
【问题描述】:

我需要在 ruby​​ 提示符下发出命令

irb(main):007:0> f = File.new("C:\Users\ABHIJI~1.SHE\AppData\Local\Temp\myoutp>
Errno::ENOENT: No such file or directory - ls -alF C:UsersABHIJI\~1.SHEAppDataLo
calTemp\myoutput.txt
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/formatter.rb:191:in ``'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/formatter.rb:191:in `awesome_file'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/formatter.rb:26:in `format'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/inspector.rb:137:in `unnested'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/inspector.rb:104:in `awesome'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/core_ext/kernel.rb:10:in `ai'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/core_ext/kernel.rb:15:in `ap'
        from C:/Ruby/Ruby193/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib/aw
esome_print/inspector.rb:31:in `output_value'
        from C:/Ruby/Ruby193/bin/irb:12:in `<main>'

我已经给出了临时文件夹的路径。 我使用的是 Windows 7,Ruby 路径是 C:\Ruby\Ruby193\bin

【问题讨论】:

    标签: ruby


    【解决方案1】:

    反斜杠字符用作“转义字符”,用于在字符串中插入特殊字符。例如,要插入制表位,您可以使用“\t”。如果你想拥有一个文字 \,你必须用另一个 \ 转义它。所以你的字符串应该是"C:\\Users\\ABHIJI~1.SHE\\AppData\\Local\\Temp\\myoutput.txt"

    例子:

    # right
    >> puts "C:\\Users\\ABHIJI~1.SHE\\AppData\\Local\\Temp\\myoutput.txt"
    C:\Users\ABHIJI~1.SHE\AppData\Local\Temp\myoutput.txt
    => nil
    
    # wrong
    >> puts "C:\Users\ABHIJI~1.SHE\AppData\Local\Temp\myoutput.txt"
    C:UsersABHIJI~1.SHEAppDataLocalTempmyoutput.txt
    => nil
    

    但是,您也可以在路径中使用正斜杠,即使在 Windows 上也是如此。更多详情,请看这个答案https://stackoverflow.com/a/14875567/1067124

    【讨论】:

    • f = File.new("C://Users//ABHIJI~1.SHE//AppData//Local//Temp//myoutput.txt","w+") 甚至不工作正斜杠也不起作用
    • @Abhijit 使用正斜杠时,只使​​用一个。您只需在使用反斜杠时将它们加倍。 "C:/Users/ABHIJI~1.SHE" 等价于 "C:\\Users\\ABHIJI~1.SHE"
    • 能否在命令行提示符下运行`dir C:\Users\ABHIJI~1.SHE\AppData\Local\Temp`查看文件夹是否存在?
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    相关资源
    最近更新 更多