如何让subprocess.Popen()在导入的模块中运行

时间:2018-06-18 04:50:23

标签: python-3.x jupyter-notebook

我编写了一个Python函数来获取文件名,然后在Jupyter笔记本中使用Notepad ++打开它。

当我在笔记本中直接使用 时,它工作正常:

def runNpp ( NppInputFile ):
	exe_loc = r'C:\Program Files (x86)\Notepad++\notepad++.exe'
	p = subprocess.Popen([exe_loc, NppInputFile], creationflags = subprocess.CREATE_NEW_CONSOLE)
	p_status = p.wait()  # waits until Notepad++ finishes
  
import subprocess

runNpp('test.txt')

但是,当我将该函数保存在文件ExtEd.py中,然后在笔记本单元格中尝试以下操作:

import ExtEd

ExtEd.runNpp('test.txt')

我得到以下追溯:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-3f6c6dae9fe7> in <module>()
----> 1 ExtEd.runNpp('test.txt')

Z:\SJSU\ME 30\Python related\ME 30 redesign\ExtEd.py in runNpp(NppInputFile)
      1 def runNpp ( NppInputFile ):
      2         exe_loc = r'C:\Program Files (x86)\Notepad++\notepad++.exe'
----> 3         p = subprocess.Popen([exe_loc, NppInputFile], creationflags = subprocess.CREATE_NEW_CONSOLE)
      4         p_status = p.wait()  # waits until Notepad++ finishes

NameError: name 'subprocess' is not defined

我尝试了所有我能想到的内容,例如将import subprocess作为ExtEd.py中的一行代码,包括函数定义中的import subprocess,但无济于事。我在Python学习曲线上很低,所以我可能缺少一些阻止这种尝试创建可重用代码的基本概念:(

我查看了“可能已经有你答案的问题”列表。似乎How to import a module given the full path?可能适用,但我不太了解它如何应用它。我还查看了http://sebastianraschka.com/Articles/2014_python_scope_and_namespaces.html,这似乎是适用的,但我无法理解它如何适用于访问先前导入到笔记本中的模块。任何帮助表示赞赏!

0 个答案:

没有答案
相关问题