为什么子进程模块给我WinError193?

时间:2019-02-14 00:29:01

标签: python windows subprocess

我正在尝试打开带有子流程模块的记事本,但发生错误。

function unzipper(buffer) {
  return new Promise((resolve, reject) => {
    unzippedContents = {};
    yauzl.fromBuffer(buffer, {lazyEntries: true}, (err, zip) => { // yauzl = require('yauzl')
      if (err) return reject(err);
      zip.on('entry', (entry) => {
        if (/\/$/.test(entry.fileName)) return zip.readEntry(); // no directories
        zip.openReadStream(entry, async (err, rs) => {
          try {
            if (err) throw err;
            unzippedContents[entry.fileName] = await stream2buffer(rs);
          } catch (err) {
            zip.close();
            return reject(err);
          }
          zip.readEntry();
        });
      }).on('end', () => {
        zip.close();
        resolve(unzippedContents);
      });
      zip.readEntry(); // start the process
    });
  });
}

错误:

import subprocess

subprocess.Popen(r'C:\Users\user\Desktop\notepad.lnk')

2 个答案:

答案 0 :(得分:1)

从错误中很明显,子进程不将快捷方式视为应用程序。以下代码可用于启动快捷方式-

BACKGROUND_TASK_RUN_ASYNC = True
BACKGROUND_TASK_ASYNC_THREADS = 4

答案 1 :(得分:0)

我相信您的问题是Popen本身不遵循Windows符号链接。您必须在执行过程中包含一个shell:

subprocess.Popen(r'C:\Users\user\Desktop\notepad.lnk', shell=True)

因为外壳程序会在调用Popen本身之前先解析链接。