模块内部错误,python

2024-10-05 19:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个名为字符串播放.py,并调用了一个文件扫描文件.py然后在中调用函数扫描文件.py在另一个名为控制器.py. 但它引起了一个错误字符串播放.py不存在

在扫描文件.py你知道吗

import StringPlay as SP

def TNews(FileFirstLine):
    FileLine = SP.RemoveSpases(FileFirstLine)
    if True:
       Statement
    return(FileLine)

在控制器.py你知道吗

from HelpFiles import StringPlay as SP
from HelpFiles import ScanTheFile as StF

File1 = open("TextFiles\File1.txt")
print(Stf.TNews(File1.readline()))

当执行此操作时,它会引发一条消息,指出扫描文件.py在第1行:

File "C:\Users\***\My Documents\Python\HelpFiles\ScanTheFile.py", line 1, in <module>
import StringPlay as SP
ImportError: No module named 'StringPlay'

但是什么时候扫描文件.py被处决了没问题。你知道吗

这是我的目录结构

My Documents\Python 
My Documents\Python\Controller.py 
My Documents\Python\HelpFiles 
My Documents\Python\HelpFiles\ScanTheFile.py 
My Documents\Python\HelpFiles\StringPlay.py 
My Documents\Python\TextFiles 
My Documents\Python\TextFiles\File1.txt 
My Documents\Python\TextFiles\File2.txt

Tags: 文件字符串pyimporttxtmyas控制器
2条回答

您正在从HelpFiles导入,它基本上是一个文件夹而不是一个文件。简单地说,在python中,如果要从文件夹导入某个内容,它必须是一个包,除非您显式地将文件夹的路径添加到python路径。你知道吗

因此,要解决这个问题,您需要将名为__init__.py的空文件放入该文件夹中,使HelpFiles成为一个包,该文件夹应该如下所示

.
└── My Document
    └── Python
        ├── Controller.py
        ├── HelpFiles
        │   ├── __init__.py
        │   ├── ScanTheFile.py
        │   └── StringPlay.py
        └── TextFiles
            ├── File1.txt
            └── File2.txt

您遇到这个问题是因为当您运行Controller.py时,您正在运行它,比如说C:\...\My Documents当您调用from HelpFiles import ScanTheFile as StF时,您告诉python在C:\...\My Documents\HelpFiles中查找名为ScanTheFile.py的文件。你知道吗

它找到这个文件并在C:\...\My Documents中运行它,因此当它到达ScanTheFile.py中的行时:

import StringPlay as SP

它在C:\...\My Documents中寻找StringPlay.py,我可以从C:\...\My Documents\HelpFiles中收集到。你知道吗

既然您已经在Controller.py中显式导入StringPlay.py,我想说只要将ScanTheFile.py更改为只导入StringPlay.py,而不是直接运行导入的文件:

ScanTheFile.py

if __name__ == "__main__":
    import StringPlay as SP

def TNews(FileFirstLine):
    FileLine = SP.RemoveSpases(FileFirstLine)
    if True:
       Statement
    return(FileLine)

相关问题 更多 >