我需要编写一个haskell程序,它从命令行参数中检索一个文件并逐行读取该文件。我想知道如何解决这个问题,我是否必须将命令行参数作为字符串并将其解析为openFile或其他内容?我对哈斯克尔很陌生,所以我很迷茫,任何帮助将不胜感激!Haskell从标准输入读取文件
0
A
回答
8
是的,如果想要将文件指定为参数,那么必须获取参数并将其发送到openFile。
System.Environment.getArgs
将参数作为列表返回。因此,考虑test_getArgs.hs
像
import System.Environment (getArgs)
main = do
args <- getArgs
print args
然后,
$ ghc test_getArgs.hs -o test_getArgs
$ ./test_getArgs
[]
$ ./test_getArgs arg1 arg2 "arg with space"
["arg1","arg2","arg with space"]
所以,如果你想读一个单一的文件:
import System.Environment (getArgs)
import System.IO (openFile, ReadMode, hGetContents)
main = do
args <- getArgs
file <- openFile (head args) ReadMode
text <- hGetContents file
-- do stuff with `text`
(NB该代码有没有错误恢复:该怎么办如果没有参数,所以args
为空(head
将会失败)?如果文件不存在/不可读?)
3
相关问题
- 1. 从标准输入读取
- 2. Haskell输入 - 如何从标准输入中读取x个输入数
- 3. 有条件地从标准输入或文件读取文件
- 4. Haskell IO - 从标准输入直接读取到列表
- 5. 阅读()从标准输入读取流
- 6. 从标准输入读取使用读
- 7. 使用读取从文件或标准输入输入不存储读取值
- 8. 写入标准输出并从标准输入读取C
- 9. C++从标准输入和标准输出读取
- 10. 从标准输入读取数字行
- 11. Pylint:从标准输入读取?
- 12. 从标准输入读取,直到EOF
- 13. 从标准输入流中读取Hadoop
- 14. 从python的标准输入读取行?
- 15. 从标准输入读取libxml2在C
- 16. 非阻塞从标准输入读取
- 17. 从标准输入异步读取
- 18. 从标准输入读取整数
- 19. 的wget从标准输入读取
- 20. 从标准输入读取密码
- 21. netbeans从标准输入读取
- 22. 从标准输入读取C++
- 23. 读取文件或读取标准用户输入
- 24. 从标准输入读取较少,但显示文件名
- 25. 从文件中读取作为标准输入
- 26. 从标准输入(可变长度文件)中读取
- 27. 让Rscript读取或从标准输入中获取输入
- 28. 如何从标准输入读取标准输入来运行Python源代码?
- 29. 从python重定向标准输入读取输入
- 30. 如何使用select从标准输入读取输入?
什么将总结IO串的数字的好方法? – SNpn 2012-04-03 09:31:42
@SNpn,求和的数字? (你必须提供更多信息) – huon 2012-04-03 09:35:00
对不起,文件包含一个整数列表(每行设置一个整数)我需要检索文件并对整数进行求和,我试图'打印'。 sum(text)' – SNpn 2012-04-03 09:43:41