我无法在 py3 中导入 file.txt

I can't import a file.txt in py3

我正在尝试在 py3 上编写程序。我已将 2 个原始文本保存在与 "programm.py" 相同的目录中,但程序找不到这些文本。 我正在使用 emacs,我写道:

from __future__ import division
import nltk, sys, matplotlib, numpy, re, pprint, codecs
from os import path
text1 = "/home/giovanni/Scrivania/Giovanni/programmi/Esame/Milton.txt"
text2 = "/home/giovanni/Scrivania/Giovanni/programmi/Esame/Sksp.txt"
from nltk import ngrams
s_tokenizer = nltk.data.load("tokenizers/punkt/english.pickle")
w_tokenizer = nltk.word_tokenize("text")
print(text1)

但是当我在 py3 中 运行 它不打印 text1(我用它来查看它是否有效)

>>> import programma1
>>> 

相反,如果我要求在 py3 中打印,它找不到文件

>>> import programma1
>>> text1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'text1' is not defined

我能做什么?

with open('/home/giovanni/Scrivania/Giovanni/programmi/Esame/Milton.txt') as f:
    data = f.read()
print(data)

这里有几个独立的问题。正如@Yash Kanojia 正确指出的那样,要获取文件的内容,您需要阅读它们,而不仅仅是获取它们的地址。

您无法访问 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)

main.py:

import programma1

print(programma1.text1)

编辑:

我假设您想要将文件的内容加载到分词器中。如果这样做,请替换此行:

w_tokenizer = nltk.word_tokenize("text")

用这条线

w_tokenizer = nltk.word_tokenize(text1 + "\n" + text2)

希望这对您有所帮助。