gpt4 book ai didi

Haskell 编译输入文件,错误 openFile : does not exist (No such file or directory)

转载 作者:行者123 更新时间:2023-12-02 08:35:48 25 4
gpt4 key购买 nike

如果这是一个简单的问题,我深表歉意。
我指定了一个输入文件,它位于代码源文件的同一目录中。

isprime :: Int -> [Int] -> Bool 
isprime ...

main = do
handle <- openFile "primes-to-100k.txt" ReadMode
contents <- hGetContents handle
i <- getLine
print $ isprime (read i::Int) $ map (\x->read x::Int) $ lines contents
hClose handle

当我在 shell 中使用“runhaskell Q111.hs”时,代码运行良好,
但是当我用“ghc --make Q111.hs”编译它并运行时,我收到一条错误消息

Q111: primes-to-100k.txt: openFile: does not exist (No such file or directory)
登出

关键是代码在ghci和runhaskell下运行良好,但是可执行文件找不到输入txt。

我是否必须使用某种方式将输入 txt 提供给编译器?

最佳答案

你是如何运行可执行文件的?文本文件必须位于您运行程序的目录中,该目录可能是也可能不是程序所在的目录。如果您正在运行 ./Q111从命令行,或者如果您双击 Q111.exe在 Windows 中,则文本文件必须与可执行文件位于同一文件夹中。如果您在命令行的不同目录中,则文本文件必须位于当前目录所在的任何位置,而不是可执行文件所在的目录。

编辑:刚刚从您的其他评论中看到您使用的是 OS X,并且(我假设)正在双击该程序。根据您所说的,我猜 OS X 将此类执行程序的当前目录设置为您的家。如果要获取程序的目录,请参阅 this question 的答案。 .如果您使用 FindBin他们提到的包:

main = do
exedir <- getProgPath
handle <- openFile (exedir ++ "/primes-to-100k.txt") ReadMode
...

关于Haskell 编译输入文件,错误 openFile : does not exist (No such file or directory),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21765570/

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