Python 我能';t在py3中导入file.txt
我想在py3上写一个程序。我已经在“program.py”的同一个目录中保存了两个原始文本,但是程序找不到这些文本。 我正在使用emacs,我写道: 来自未来进口部的Python 我能';t在py3中导入file.txt,python,python-3.x,nltk,Python,Python 3.x,Nltk,我想在py3上写一个程序。我已经在“program.py”的同一个目录中保存了两个原始文本,但是程序找不到这些文本。 我正在使用emacs,我写道: 来自未来进口部的 导入nltk、sys、matplotlib、numpy、re、pprint、编解码器 从操作系统导入路径 text1=“/home/giovanni/Scrivania/giovanni/programmi/Esame/Milton.txt” text2=“/home/giovanni/Scrivania/giovanni/pro
导入nltk、sys、matplotlib、numpy、re、pprint、编解码器
从操作系统导入路径
text1=“/home/giovanni/Scrivania/giovanni/programmi/Esame/Milton.txt”
text2=“/home/giovanni/Scrivania/giovanni/programmi/Esame/Sksp.txt”
从nltk导入ngrams
s_tokenizer=nltk.data.load(“tokenizers/punkt/english.pickle”)
w_tokenizer=nltk.word_tokenize(“文本”)
打印(文本1)
但当我在py3中运行它时,它不会打印text1(我用它来查看它是否有效)
相反,如果我要求在py3中打印,它将找不到该文件
>>> import programma1
>>> text1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'text1' is not defined
导入程序MA1
>>>文本1
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
名称错误:未定义名称“text1”
我能做什么?这里有一些独立的问题。正如@Yash Kanojia正确指出的,要获取文件的内容,您需要读取它们,而不仅仅是拥有它们的地址
with open('/home/giovanni/Scrivania/Giovanni/programmi/Esame/Milton.txt') as f:
data = f.read()
print(data)
无法访问text1
的原因是它不是全局变量。要访问它,您需要使用programma1.text1
我还将所有导入语句移到了programma1.py
的顶部,因为这被视为良好实践:)
完整代码:
programma1.py
:
from __future__ import division
import nltk, sys, matplotlib, numpy, re, pprint, codecs
from nltk import ngrams
from os import path
with open("/home/giovanni/Scrivania/Giovanni/programmi/Esame/Milton.txt") as file1:
text1 = file1.read()
with open("/home/giovanni/Scrivania/Giovanni/programmi/Esame/Sksp.txt") as file2:
text2 = file2.read()
s_tokenizer = nltk.data.load("tokenizers/punkt/english.pickle")
w_tokenizer = nltk.word_tokenize("text")
#print(text1)
import programma1
print(programma1.text1)
main.py
:
from __future__ import division
import nltk, sys, matplotlib, numpy, re, pprint, codecs
from nltk import ngrams
from os import path
with open("/home/giovanni/Scrivania/Giovanni/programmi/Esame/Milton.txt") as file1:
text1 = file1.read()
with open("/home/giovanni/Scrivania/Giovanni/programmi/Esame/Sksp.txt") as file2:
text2 = file2.read()
s_tokenizer = nltk.data.load("tokenizers/punkt/english.pickle")
w_tokenizer = nltk.word_tokenize("text")
#print(text1)
import programma1
print(programma1.text1)
编辑:
我假定您想将文件的内容加载到标记器中。如果需要,请替换此行:
w_tokenizer = nltk.word_tokenize("text")
用这条线
w_tokenizer = nltk.word_tokenize(text1 + "\n" + text2)
希望这能有所帮助。这并不重要,因为Python有垃圾收集功能。您会注意到,如果您在写入模式下运行“打开”文件,而不将其分配给变量,则可以在其他程序中写入该文件。如果将其分配给变量,则不能,因为Python的垃圾收集不会破坏它。现在,当我在py print(programma1.text1)中运行时,它会说=>AttributeError:模块“programma1”没有属性“text1”,您是否已完全复制了这两段代码,因为它在我的计算机上工作……添加上下文以便我们可以从中学习。(防止否决和赢得2019年审查后低质量奖)。