我需要編寫一個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