我编写了一个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,这似乎是适用的,但我无法理解它如何适用于访问先前导入到笔记本中的模块。任何帮助表示赞赏!