【问题标题】:How to access Atom workspace directory in a Python script如何在 Python 脚本中访问 Atom 工作区目录
【发布时间】:2020-04-21 06:06:19
【问题描述】:

我正在编写一个 Python 脚本,并希望在该脚本中访问 Atom 的当前工作目录。

Atom 建立在 electron.js 之上,而您在 JavaScript 中的实现方式是:

let filePath = atom.workspace.getActiveTextEditor().getPath();

我希望在我的 Python 脚本中使用这个变量(只是目录)。

【问题讨论】:

  • 如果您能提供更多关于您在此处尝试执行的操作的背景信息,将会有所帮助。我猜您可以使用 JavaScript 执行 Python 脚本并将路径作为参数传递。但我不认为这样做有什么意义。
  • @idleberg 我想独立使用 python 脚本。该脚本将在 Atom 的工作目录中创建一些目录,我将使用我正在创建的插件触发此脚本。
  • 当您说“插件”时,您是指 Atom 包吗?
  • @idleberg 是的,我的意思是包。
  • 欢迎来到 SO!不幸的是,SO 不是一个代码转换站点。您应该进行研究,然后尝试自己编写代码,如果遇到问题,请询问有关该特定问题的特定问题。请参阅“How to Ask”、“Stack Overflow question checklist”和“MCVE”及其所有链接页面以及““Please convert my code to X” questions”。

标签: javascript python electron atom-editor


【解决方案1】:

你想要达到的目标让我有些头疼。虽然当然可以从 JavaScript 调用 Python 解释器,但对于使用你的包的人来说,这可能不是最好的用户体验。

在运行 Python 脚本之前,包至少需要检查以下内容:

  • 用户安装了正确版本的 Python
  • python 暴露于PATH
  • 活动文件可以被 Python 解释

这些是不同的问题,但仍有一些问题需要解决。

您尚未指定是在同步函数还是异步函数中调用 Python 脚本。我将假设前者,因为它对 JavaScript 初学者来说更容易理解,但您可能希望在后面的步骤中更改它

JavaScript

// Import Node's spawn method
const { spawnSync } = require('child_process');

// Get path of active file
const activeEditorPath = atom.workspace.getActiveTextEditor().getPath();

// Spawn child process
const child = spawnSync('python', ['path/to/your/script', activeEditorPath]);

Python

import sys

# Get argument
active_editor_path = sys.argv[1]

# Print editor path
print(f'Active editor path: {active_editor_path}')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 2018-07-11
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多