我具有以下文件夹结构
Tool -> Tool folder have following three subfolders
inputfiles
outputfiles
soucefiles
sourcefiles have following files
__init__.py
main.py
ParseLogFile.py
以下是ParseLogFile.py的内容
class ParseLogFile:
# initialize file name
def __init__(self, filename):
self.filename = filename
return
def ParseLogFileFunc(self):
print("ParseLogFileFunc called " + self.filename
)
以下是main.py的内容
from sourcefiles.ParseLogFile import ParseLogFile
parseFile = ParseLogFile("logfile")
parseFile.ParseLogFileFunc()
如果我使用以下功能,则它正常工作
from ParseLogFile import ParseLogFile
parseFile = ParseLogFile("logfile")
parseFile.ParseLogFileFunc()
但我试图了解导入的绝对路径和相对路径
问题1:
当我像上面一样给出绝对路径时,我会遇到错误
from sourcefiles.ParseLogFile import ParseLogFile
如果我在文件main.py以上运行,则出现以下错误。
ModuleNotFoundError: No module named 'sourcefiles'
我们如何使用简化路径纠正此错误?
问题2:如果我使用相对路径
from .ParseLogFile import ParseLogFile
parseFile = ParseLogFile("logfile")
parseFile.ParseLogFileFunc()
如果我在文件main.py以上运行,则出现以下错误。
ModuleNotFoundError: No module named '__main__.ParseLogFile'; '__main__' is not a package
问题3: 如何通过在python中提供相关路径来打开文件,例如在“ inputfiles”文件夹中的案例输入文件中。
我是python的新手,正在尝试以实际方式在实际项目中学习python。请帮助。我正在使用蟒蛇的python 3.x和spyder工具进行开发
答案 0 :(得分:0)
Q1和Q2可以用一种解释来回答。 -您的“ main.py”和“ ParseLogFile.py”是相同的,这就是为什么直接从导入直接运行的原因,您可能已经知道,但是当您提供相对路径时,它可能是正确的,但是python却采用了另一种方式相对路径或绝对路径的情况总是在python中使用os lib给出。对路径进行硬编码通常会造成问题。
第三季度 导入操作系统 dir_path = os.path.dirname(os.path.realpath(文件))
或者您可以通过相同的方式获得绝对路径。