我正在尝试将.html文件打开为一个很长的字符串.这就是我所拥有的:
open(FILE, 'index.html') or die "Can't read file 'filename' [$!]\n";
$document = <FILE>;
close (FILE);
print $document;
Run Code Online (Sandbox Code Playgroud)
这导致:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN
但是,我希望结果看起来像:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
这样我就可以更轻松地搜索整个文档.
为什么"啜饮"文件不是普通文本文件I/O的好习惯,何时有用?
例如,为什么我不应该使用这些?
File.read('/path/to/text.txt').lines.each do |line|
# do something with a line
end
Run Code Online (Sandbox Code Playgroud)
要么
File.readlines('/path/to/text.txt').each do |line|
# do something with a line
end
Run Code Online (Sandbox Code Playgroud) 假设我在http://example.com上有一个网站.我真的很想让机器人看到主页,但是任何其他页面都需要被阻止,因为它对蜘蛛来说毫无意义.换一种说法
http://example.com和http://example.com/应该被允许的,但 http://example.com/anything和http://example.com/someendpoint.aspx应该被阻止.
此外,如果我可以允许某些查询字符串直接进入主页,那将是很棒的:http: //example.com?okparam = true
我正在使用一个非常精美的webkit过滤器来制作背景图像灰度,并将鼠标悬停在图像上变成颜色.
这是过滤器
filter: none;
-webkit-filter: grayscale(0);
transition: opacity .3s ease-in-out;
-moz-transition: opacity .3s ease-in-out;
-webkit-transition: opacity .3s ease-in-out;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,甚至还有一个"过渡"属性,使图像具有平滑的渐变过渡到全彩色.我遇到的问题是我正在应用它的div也影响位于div内部的子文本,也将文本转换为灰度.这是一个问题,因为文本需要是白色的,即使没有被盘旋.
我试过用子文本上的另一个来否定过滤器,但它似乎不起作用......看看小提琴
这段代码是将文件内容读入Perl变量的好方法吗?它有效,但我很好奇我是否应该使用更好的练习.
open INPUT, "input.txt";
undef $/;
$content = <INPUT>;
close INPUT;
$/ = "\n";
Run Code Online (Sandbox Code Playgroud) 我知道我可以通过将输入记录分隔符($/)设置为未定义的值来吸引文件,例如
open my $fh, '<', $filename or die "Cannot read from $file: $!";
my $contents = do { local $/; <$fh> };
Run Code Online (Sandbox Code Playgroud)
但是最近我遇到了一个非常相似但又不同的成语:
open my $fh, '<', $filename or die "Cannot read from $file: $!";
my $contents = do { local $/ = <$fh> };
Run Code Online (Sandbox Code Playgroud)
(请注意,local $/ = <$fh>而不是local $/; <$fh>)。
这两种的工作,并且对两者的CPAN实例与分配所述变体与所述一个无(尽管后者并不奇怪,更为常见)。
但是我的问题是为什么它起作用?作业的变化形式是什么?
PS:我也知道我应该使用例如。File :: Slurper可以吞食文件,但是有时候生活很有趣。
我有一个使用leningen创建的项目,我在其中保存了src/some_project_name目录中的clj文件(以及自动生成的core.clj文件).
与这些clj文件一起保存的是我想要slurp从它们旁边的clj文件中获取的文本文件.我的理解是,读取文件是相对于工作目录的,并且工作目录将位于您启动REPL的任何位置.我从src/some_project_name里面启动了REPL,其中所有文件都位于,而不是root.(System/getProperty "user.dir")确认这是活动目录.
但是我也读过这slurp将查找相对于你的根目录的文件,尽管从src/some_project_name中启动了REPL,但显然正在发生这种情况.我必须列出相对于根目录的文本文件路径才能找到它们,例如"src/some_project_name/foo.txt"而不仅仅是"foo.txt".
在设置项目之前,可以相对于REPL运行的任何地方访问文件(正如我所期望的那样).现在,在设置项目之后,无论REPL在何处启动,它们似乎只能相对于root进行访问.
我对此没有任何问题,但我不明白.是否有一些设置由leningen完成拦截REPL评估,并告诉它从root搜索而不是在活动目录的位置搜索?
(Clojure新手)
在我的linux机器上,slurping /proc/cpuinfo引发了一个错误:
user=> (slurp "/proc/cpuinfo")
java.io.IOException: Invalid argument (NO_SOURCE_FILE:0)
Run Code Online (Sandbox Code Playgroud)
谁知道为什么会这样?(/ proc文件系统是Java中的某种二等公民吗?)
编辑:以下代码,改编自nakkaya.com,完美无瑕:
(with-open [rdr (java.io.BufferedReader.
(java.io.FileReader. "/proc/cpuinfo"))]
(let [seq (line-seq rdr)]
(apply print seq)))
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这个区别?
我有一个普通的配置文件,我也想附加数据。使用我想添加的python收集数据会更容易,但是我无法在python中找到相应的ConfigSlurper模块,而且我没有简单的方法可以使用ConfigParser或其他任何方式做到这一点。有没有人做过这样的事情,对最佳方法有一些反馈/建议?
我正在开发一个依赖于某个数据文件的webapp,它在运行时会被混淆.没有数据文件,我似乎无法编译.为什么是这样?
这是我的core.clj
(def my-data (slurp "my-file.txt"))
Run Code Online (Sandbox Code Playgroud)
然后当我尝试编译时:
$ lein ring war
Run Code Online (Sandbox Code Playgroud)
我得到了这个例外
Exception in thread "main" java.io.FileNotFoundException: my-file.txt (No such file or directory), compiling:(core.clj:24:28)
Run Code Online (Sandbox Code Playgroud)
我该怎么编译我的战争?我不需要在编译时篡改文件甚至检查是否存在.提前致谢!
[UPDATE]
这不是特定于war文件打包或响铃,例如:
(ns slurp-test.core
(:gen-class))
(def x (slurp "/tmp/foo.txt"))
(defn -main [& args]
(println x))
Run Code Online (Sandbox Code Playgroud)
然后:
$ lein uberjar
Compiling slurp-test.core
(ns slurp-test.core
Exception in thread "main" java.io.FileNotFoundException: /tmp/foo.txt (No such file or directory), compiling:(core.clj:4:8)
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?