摘要:使用模塊逐行讀取流數(shù)據(jù)創(chuàng)建對象在模塊中,通過對象的使用來實現(xiàn)逐行讀取流數(shù)據(jù)的處理。屬性值為一個可用來寫入流數(shù)據(jù)的對象,用于指定數(shù)據(jù)的輸出目標。屬性值為一個函數(shù),用于指定補全處理。
1. 使用readline模塊逐行讀取流數(shù)據(jù) 1.1. 創(chuàng)建Interface對象
在readline模塊中,通過Interface對象的使用來實現(xiàn)逐行讀取流數(shù)據(jù)的處理。因此首先要創(chuàng)建Interface對象,在readline模塊中,可以通過createInterface方法來創(chuàng)建Interface對象.readline.createInterface(options),options為一個對象,屬性如下
input: 屬性值為一個可用來讀取流數(shù)據(jù)的對象,用于指定讀入數(shù)據(jù)的來源。
output: 屬性值為一個可用來寫入流數(shù)據(jù)的對象,用于指定數(shù)據(jù)的輸出目標。
computer: 屬性值為一個函數(shù),用于指定Tab補全處理。函數(shù)的參數(shù)值被自動設定為從該行中讀入的Tab字符之前的數(shù)據(jù),該函數(shù)應該返回一個由所有用于Tab補全時的匹配字符串組成的數(shù)組以及從該行中讀入的Tab字符之前的數(shù)據(jù)。
terminal: 該屬性為一個布爾類型的屬性,當需要像一個終端那樣實時地將輸入數(shù)據(jù)流進行輸出,且需要在輸出數(shù)據(jù)中寫入ANSI/VT100控制字符串時,需要將該屬性值設置為true,默認屬性值等于output屬性值對象的isTTY屬性值。
// 輸入 exit, quit,q這三個任意之一的時候,會退出 const readline = require("readline"); let rl = readline.createInterface({ input: process.stdin, output: process.stdout, completer: completer }); rl.on("line", (line) => { if (line === "exit" || line === "quit" || line === "q") { rl.close(); } else { console.log("您輸入了:", line); } }); rl.on("close", () => { console.log("行數(shù)據(jù)讀取操作被終止"); }); function completer(line) { const completions = ".help .error .exit .quit .q".split(" "); let hits = completions.filter((c) => { return c.indexOf(line) === 0; }); return [hits.length ? hits : completions, line] }1.2. 使用Interface對象逐行讀取文件
原fs.js文件的內(nèi)容
console.log("this is line 1"); console.log("this is line 2"); console.log("this is line 3"); console.log("this is line 4"); console.log("this is line 5");
代碼內(nèi)容
const readline = require("readline"); const fs = require("fs"); let file = fs.createReadStream("./fs.js"); let out = fs.createWriteStream("./anotherFs.js"); let index = 1; out.write("/*line" + index.toString() + ": */"); let rl = readline.createInterface({ input: file, output: out, terminal: true }); rl.on("line", (line) => { if (line === "") { rl.close(); } else { index++; out.write("/*line" + index.toString() + ": */"); } });
生成的anotherFs.js文件的內(nèi)容
/*line1: */console.log("this is line 1"); /*line2: */console.log("this is line 2"); /*line3: */console.log("this is line 3"); /*line4: */console.log("this is line 4"); /*line5: */console.log("this is line 5");/*line6: */2. 使用util模塊中提供的一些方法
+format方法
類似于C語言中的printf方法,將第一個參數(shù)值作為一個格式化字符串,將其他參數(shù)值作為該格式化字符串中所使用的各中參數(shù),返回一個經(jīng)過格式化處理后的字符串.util.format("您輸入了%d個參數(shù),參數(shù)值分別為%s,%s,%s",3,"nice","excelent","holy");
格式化字符串中,可以使用的參數(shù)指定符號
*`%s`:用于指定字符串參數(shù) *`%d`:用于指定數(shù)值參數(shù),包括整數(shù)及浮點數(shù) *`%j`:用于指定一個`JSON`對象 *`%%`:用于指定一個百分號 *如果格式化字符串中使用的參數(shù)個數(shù)多于format方法中使用的除了`format`參數(shù)之外的其他參數(shù),則格式化字符串中多于的參數(shù)將不被替換.`console.log(util.format("%s:%s","one"));` *如果格式化字符串中使用的參數(shù)個數(shù)少于`format`方法中使用的除了`format`參數(shù)之外的其他參數(shù),則根據(jù)`format`方法中多于參數(shù)值的類型自動將其轉(zhuǎn)換為字符串,中間使用一個空格進行分割.
+inspect(object,[options])返回一個字符串,該字符串包含了對象的信息,在調(diào)試應用程序的過程中非常有用.
*`showHidden`如果為`true`,則`object`的不可枚舉的符號與屬性也會被包括在格式化后的結果中.默認為`false.` *`depth `指定格式化`object`時遞歸的次數(shù).這對查看大型復雜對象很有用.默認為`2`.若要無限地遞歸則傳入`null`. *`colors `如果為`true`,則輸出樣式使用`ANSI`顏色代碼.默認為`false`.顏色可自定義. *`customInspect `如果為`false`,則`object`上自定義的`inspect(depth,opts)`函數(shù)不會被調(diào)用.默認為`true`. *`showProxy `如果為`true`,則`Proxy`對象的對象和函數(shù)會展示它們的`target`和`handler`對象.默認為`false`. *`maxArrayLength `指定格式化時數(shù)組和`TypedArray`元素能包含的最大數(shù)量.默認為`100`.設為`null`則顯式全部數(shù)組元素.設為`0*`或負數(shù)則不顯式數(shù)組元素. *`breakLength `一個對象的鍵被拆分成多行的長度.設為`Infinity`則格式化一個對象為單行.默認為`60`.
+自定義util.inspect顏色
可以通過util.inspect.styles和util.inspect.colors屬性全局地自定義util.inspect的顏色輸出(如果已啟用)
const util = require("util"); console.log(util.format("您輸入了%d個參數(shù),參數(shù)值分別為%s,%s,%s", 3, "nice", "excelent", "holy")); //您輸入了3個參數(shù),參數(shù)值分別為nice,excelent,holy console.log(util.format("一個JSON對象%j", {"name": "jack", "age": 25})); // 一個JSON對象{"name":"jack","age":25} console.log(util.format("一個百分號%"));// 一個百分號% console.log(util.format("%s:%s", "one"));// one:%s console.log(util.format("%s", "one", "two", "three", {"name": "jack"})); function test(one, two) { return one + two; } let parent = new Object(); parent.name = "parent"; parent.func = test; let child1 = new Object(); child1.name = "child1"; parent.child1 = child1; let child2 = new Object(); child2.name = "child2"; child1.child = child2; let child3 = new Object(); child3.name = "child3"; child2.child = child3; child2.inspect = function (depth) { return util.inspect(this, {depth: depth - 2, customInspect: false}) }; console.log(util.inspect(parent, {customInspect: true, depth: 4})); /** * { name: "parent", * func: [Function: test], * child1: * { name: "child1", * child: { name: "child2", child: [Object], inspect: [Function] } } } * **/
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/93021.html
摘要:不能用于機器學習太慢幻覺矩陣操作太難有函數(shù)庫啊,比如只能用于前端開發(fā)開發(fā)者笑了機器學習庫都是開發(fā)者機器學習庫神經(jīng)網(wǎng)絡神經(jīng)網(wǎng)絡自然語言處理卷積神經(jīng)網(wǎng)絡一系列庫神經(jīng)網(wǎng)絡深度學習我們將使用來實現(xiàn)線性回歸,源代碼在倉庫。 譯者按: AI時代,不會機器學習的JavaScript開發(fā)者不是好的前端工程師。 原文: Machine Learning with JavaScript : Part 1 ...
摘要:模塊轉(zhuǎn)換為編碼模塊內(nèi)部使用類庫以將域名從地方語言所采用的各種編碼轉(zhuǎn)換為可用于服務器的編碼因為操作系統(tǒng)的核心都是英文服務器的解析也是由英文代碼交換所以服務器并不支持直接的使用地方語言的域名解析所有地方語言域名的解析都需要轉(zhuǎn)成編碼然后由服務器解 1. punycode punycode模塊轉(zhuǎn)換為punycode編碼 punycode模塊內(nèi)部使用punycode.js類庫,以將域名從地方...
摘要:一旦替換已經(jīng)完成,該模塊將被完全棄用。用作錯誤處理事件文件,由在標準功能上的簡單包裝器提供所有模塊都提供這些對象。 Node.js簡介 Node 定義 Node.js是一個建立在Chrome v8 引擎上的javascript運行時環(huán)境 Node 特點 異步事件驅(qū)動 showImg(https://segmentfault.com/img/bVMLD1?w=600&h=237); no...
6. 目錄操作 6.1 創(chuàng)建目錄 如果存在該目錄,就創(chuàng)建失敗 同步創(chuàng)建目錄fs.mkdirSync(path, [mode]) const fs = require(fs); let mkdir = ./mkdir; fs.mkdir(mkdir, (err) => { if (err) { console.log(`mkdir ${mkdir} file faile...
閱讀 1297·2021-11-22 09:34
閱讀 2162·2021-10-08 10:18
閱讀 1724·2021-09-29 09:35
閱讀 2453·2019-08-29 17:20
閱讀 2137·2019-08-29 15:36
閱讀 3398·2019-08-29 13:52
閱讀 775·2019-08-29 12:29
閱讀 1183·2019-08-28 18:10