Python 我能';t在py3中导入file.txt

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

我想在py3上写一个程序。我已经在“program.py”的同一个目录中保存了两个原始文本,但是程序找不到这些文本。 我正在使用emacs,我写道:

来自未来进口部的

导入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年审查后低质量奖)。