Clojure 创建1个文件并使用库(如python)
我正在学习clojure,我想用它做一些简单的事情,就像我用python做的那样 例如,我想在某个目录中快速创建一个.clj文件,其中包含CSV文件,并使用一些CSV库对其进行咀嚼,而不需要使用它来制作整个项目 在python中,我会创建一个.py文件,并在顶部导入csv。我可以在clojure做吗 如果不是,那么做这样的小脚本最简单的方法是什么 到目前为止,我所发现的一切都表明,我需要一个新的lein项目来处理这样的库 使用Clojure 创建1个文件并使用库(如python),clojure,leiningen,Clojure,Leiningen,我正在学习clojure,我想用它做一些简单的事情,就像我用python做的那样 例如,我想在某个目录中快速创建一个.clj文件,其中包含CSV文件,并使用一些CSV库对其进行咀嚼,而不需要使用它来制作整个项目 在python中,我会创建一个.py文件,并在顶部导入csv。我可以在clojure做吗 如果不是,那么做这样的小脚本最简单的方法是什么 到目前为止,我所发现的一切都表明,我需要一个新的lein项目来处理这样的库 使用bootbuild工具 你可以为此目的使用。它是一个构建工具,允许您编
boot
build工具
你可以为此目的使用。它是一个构建工具,允许您编写并执行任务(因此它不必包含所有项目结构)。在脚本中,您可以指定所需的所有依赖项、使用其他任务或定义您的依赖项。只需安装boot
并编写脚本即可
例如,要创建一个小脚本来读取命令行上提供的CSV文件,您可以编写以下命令(例如,read CSV.boot
):
使其可执行:
$ chmod +x read-csv.boot
并使用它:
$ ./read-csv.boot -f input.csv
Reading input.csv
([1 2 3])
与python的比较
在Clojure(和Java)中,依赖关系管理与Python中有点不同。在Python中,库作为全局软件包安装在系统中,其中许多是默认安装的。您还可以使用pip
等工具全局安装其他软件包。Clojure和Java通常在项目中使用Maven依赖项(不要安装它们并在全球范围内提供),这需要构建工具(例如Maven
、ivy
、lein
或boot
)来设置应用程序类路径。使用boot
构建工具
你可以为此目的使用。它是一个构建工具,允许您编写并执行任务(因此它不必包含所有项目结构)。在脚本中,您可以指定所需的所有依赖项、使用其他任务或定义您的依赖项。只需安装boot
并编写脚本即可
例如,要创建一个小脚本来读取命令行上提供的CSV文件,您可以编写以下命令(例如,read CSV.boot
):
使其可执行:
$ chmod +x read-csv.boot
并使用它:
$ ./read-csv.boot -f input.csv
Reading input.csv
([1 2 3])
与python的比较
在Clojure(和Java)中,依赖关系管理与Python中有点不同。在Python中,库作为全局软件包安装在系统中,其中许多是默认安装的。您还可以使用pip
等工具全局安装其他软件包。Clojure和Java通常在您的项目中使用Maven依赖项(不要安装它们并在全球范围内提供),这需要构建工具(例如Maven
、ivy
、lein
或boot
)来设置应用程序类路径。看一看,这似乎很简洁:
#!/usr/bin/env inlein
'{:dependencies [[org.clojure/clojure "1.8.0"]
[clojure-csv/clojure-csv "2.0.1"]]}
(require '[clojure-csv.core :as csv])
(println "Reading: " (first *command-line-args*))
(-> *command-line-args*
first
slurp
csv/parse-csv
println)
(System/exit 0)
此外,由于后台守护进程的启动,它的启动时间令人印象深刻。看一看,它看起来非常整洁:
#!/usr/bin/env inlein
'{:dependencies [[org.clojure/clojure "1.8.0"]
[clojure-csv/clojure-csv "2.0.1"]]}
(require '[clojure-csv.core :as csv])
(println "Reading: " (first *command-line-args*))
(-> *command-line-args*
first
slurp
csv/parse-csv
println)
(System/exit 0)
此外,由于后台守护进程的启动,它的启动时间令人印象深刻。既然您正在学习clojure,为什么不自己编写一个csv库呢?这只是一个例子,我只是想知道是否可以像使用python一样快速编写clojure脚本。通常我想做的是有2到3个相关的库,听起来clojure附带了一个非常健壮的标准库和java标准库。因此,这可能足以满足我的需要。Java类路径的手动管理是乏味的。我不推荐。使用Leiningen:
lein new app throwaway
,向project.clj
添加依赖项,编写一些代码,使用lein run
运行。看一看,它可以让您创建clojure脚本。既然您正在学习clojure,为什么不自己编写csv库呢?这只是一个示例,我只是想知道是否可以像使用python一样快速编写clojure脚本。通常我想做的是有2到3个相关的库,听起来clojure附带了一个非常健壮的标准库和java标准库。因此,这可能足以满足我的需要。Java类路径的手动管理是乏味的。我不推荐。使用Leiningen:lein new app throwaway
,将依赖项添加到project.clj
,编写一些代码,使用lein run
运行。查看一下,它可以创建clojure脚本。