【问题标题】:writeFile function using output from terminal使用终端输出的 writeFile 函数
【发布时间】:2018-12-15 17:33:50
【问题描述】:

运行时,以下代码可在独立项目中运行。但是,如果我想用终端中的输出替换变量“sample_text”而不是代码中的已有数组,我将如何修改代码?例如,假设在另一个文件中运行节点时,输出看起来像“学生:danny,年龄:28,体重:148”。

 // writefile.js

 const fs = require('fs');

 let sample_text = 'student: danny, age: 28, weight: 148'

 // write to a new file named sample.json

 fs.writeFile('sample.json', sample_text, (err) => {  
                if (err) throw err;
            console.log('Text saved!');
            });

【问题讨论】:

  • 导出一个函数并从其他地方调用它?
  • "... 将变量 "sample_text" 替换为终端中的输出" - 当使用 node filename.js 运行此文件时,您想从终端获取用户输入吗?
  • @ack_inc 是的,这就是希望。我运行 node index.js,然后 selenium 运行并在终端中输出一堆数据。我希望将所有这些数据放入一个 json 文件中。 (示例中不小心放了txt,其实想要一个json文件)。

标签: javascript node.js selenium-webdriver writefile


【解决方案1】:

类似这样的:

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('Enter data', (data) => {

  fs.writeFile('2pac.txt', data, (err) => {  
            if (err) throw err;
        console.log('Text saved!');
        });

  rl.close();
});

【讨论】:

    【解决方案2】:

    你需要做两件事:

    1. 将 selenium webdriver 的输出通过管道传输到节点程序
    2. 监听 process.stdin 上的 'data' 事件以捕获 selenium 的输出

    您的节点程序应如下所示:

    const fs = require('fs');
    
    let data = "";
    
    process.stdin.setEncoding('utf-8');
    
    process.stdin.on('data', chunk => {
      // I'm just collecting the chunks into 'data',
      //   but you might choose to do some processing here
      data += chunk;
    });
    
    process.stdin.on('end', () => {
      // do some more processing here, if needed
      fs.writeFileSync('output.json', data);
    });
    

    你应该通过从终端运行这个命令来启动 selenium 和这个节点程序: selenium-webdriver | node index.js

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多