Clojure 创建1个文件并使用库(如python)

Clojure 创建1个文件并使用库(如python),clojure,leiningen,Clojure,Leiningen,我正在学习clojure,我想用它做一些简单的事情,就像我用python做的那样 例如,我想在某个目录中快速创建一个.clj文件,其中包含CSV文件,并使用一些CSV库对其进行咀嚼,而不需要使用它来制作整个项目 在python中,我会创建一个.py文件,并在顶部导入csv。我可以在clojure做吗 如果不是,那么做这样的小脚本最简单的方法是什么 到目前为止,我所发现的一切都表明,我需要一个新的lein项目来处理这样的库 使用bootbuild工具 你可以为此目的使用。它是一个构建工具,允许您编

我正在学习clojure,我想用它做一些简单的事情,就像我用python做的那样

例如,我想在某个目录中快速创建一个.clj文件,其中包含CSV文件,并使用一些CSV库对其进行咀嚼,而不需要使用它来制作整个项目

在python中,我会创建一个.py文件,并在顶部导入csv。我可以在clojure做吗

如果不是,那么做这样的小脚本最简单的方法是什么

到目前为止,我所发现的一切都表明,我需要一个新的lein项目来处理这样的库

使用
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脚本。