Node.js learnyounode';我的第一个I/O';例子
这个节目让我困惑。该程序的目标是计算文件中的换行数并在命令提示符下输出。然后对文件运行他们自己的检查,查看他们的答案是否与您的答案匹配 所以我从答案开始:Node.js learnyounode';我的第一个I/O';例子,node.js,Node.js,这个节目让我困惑。该程序的目标是计算文件中的换行数并在命令提示符下输出。然后对文件运行他们自己的检查,查看他们的答案是否与您的答案匹配 所以我从答案开始: var fs = require('fs'); var filename = process.argv[2]; file = fs.readFileSync(filename); contents = file.toString(); console.log(contents.split('\n').length - 1); lea
var fs = require('fs');
var filename = process.argv[2];
file = fs.readFileSync(filename);
contents = file.toString();
console.log(contents.split('\n').length - 1);
learnyounode验证此程序是否正确计算新行数。但是,当我将程序更改为以下任何一项时,它不会打印出与LearnyYouNode打印出的数字相同的数字
file = fs.readFileSync(C:/Nick/test.txt);
file = fs.readFileSync(test.txt);
nodejs readFileSync不应该输入地址并正确读取吗
最后,这个程序应该打印出程序中的新行。为什么每次运行此程序时,正确的程序和LearnyYouNode都会打印出与换行数量不同的相同数字
例如,test.txt中的换行数是3。但是每次运行这个程序都会打印出一个不同的数字,比如45、15、2等等。但同时,LearnyYouNode会验证它是一个正确的程序,因为它们的答案都匹配!发生了什么事
编辑:
test.txt如下所示
ok
testing
123
所以,我在本地机器上试用了你的程序,你的程序运行得很好。我不是学英语的专家。我只是在你提问后试过,但我想我理解它是如何工作的。因此,以下是您问题的答案: nodejs readFileSync不应该输入地址并正确读取吗 来自nodejs的这个方法工作得很好。您可以尝试打印文件的内容,您会发现没有问题 为什么每次运行此程序时,正确的程序和LearnyYouNode都会打印出不同于换行数的相同数字 LearnyYouNode每次都以不同的
文件名作为输入来运行您的程序。它通过对同一文件运行自己的正确代码副本来验证程序的输出
但是,当我将程序更改为以下任何一项时,它不会打印出与LearnyYouNode打印出的数字相同的数字
file = fs.readFileSync(C:/Nick/test.txt);
file = fs.readFileSync(test.txt);
这是因为此时,您的代码正在处理一个固定文件,而learnyounode在每次迭代中仍在处理不同的文件。您应该使用以下方法来执行.js文件
node program_name.js /path/to/text_file_name
而不是
learnyounode run program_name.js /path/to/text_file_name
在此方法中,Node.js将使用您在命令行界面上输入的指定文件运行您的程序
希望这个答案能帮助你编程。:) 有两种不同的方法。
如果您运行以下程序:
node program_name.js
然后需要将路径添加到文本文件:
node program_name.js text_file.txt
在这种情况下,请确保文件位于同一目录中
或者,您可以使用以下命令运行它:
learnyounode program_name.js
默认文本文件将由learnyounode提供。您可以使用查看此文本文件的内容
console.log(buffer)
这也把我绊倒了。如果你仔细阅读learnyounode说明,他们会明确地说
“要读取的文件的完整路径将作为第一个命令行参数提供。”
这意味着他们正在提供自己文件的路径。
使用process.argv[2]
时,这会将第三个数组项(learnyonode测试txt文件)传递到脚本中。如果运行console.log(process.argv)代码>您将看到完整的数组对象如下所示:
[ '/usr/local/bin/node',
'/Users/user/pathstuff/learnyounode/firstio.js',
'/var/folders/41/p2jvc80j26l7nty0sk0zs1z40000gn/T/_learnyounode_1613.txt' ]
当您用自己的文本文件替换验证号时,验证号开始不匹配的原因是您的文件始终有3行,而它们的单元测试通过process.argv
传递不同长度的文件
希望这能有所帮助。问题陈述说
要读取的文件的完整路径将作为第一个路径提供
命令行参数
因此,必须将路径/to/file
作为参数传递
请记住,当您在LearnyYouNode中使用process.argv[2]时,参数是由LearnyYouNode自动提供的,因此它会在多次验证时打印不同数量的行,如45、15、2等。
如果您还记得第二个挑战“BABYSTEPS”,请仔细阅读:
运行时,learnyounode将为程序提供参数
LearnyYouNode验证program.js,这样您就不需要自己提供它们了
这就是为什么在program.js上多次验证不同的行号 要不要给我们看看你的test.txt文件?另外,您是如何确定test.txt中的换行数是3的?这只是一个假设的答案。我真正想弄明白的是,为什么新行的数量从45、15、2一直在变化。。对于我的程序和LearnyYounode。我将添加我的txt文件看起来像什么。k,所以你会得到不同的数字为同一个测试文件。听起来确实很奇怪。让我在本地运行你的程序来确认这一点。我尝试了大约10次,它成功地验证了我的代码。这并没有回答问题,而是提供了一个执行程序的方法。但问题是不同的