我有一个脚本' preprocessing.py'包含文本预处理功能:
def preprocess():
#...some code here
with open('stopwords.txt') as sw:
for line in sw.readlines():
stop_words.add(something)
#...some more code than doesn't matter
return stop_words
现在我想在另一个Python脚本中使用此函数。 所以,我做了以下几点:
import sys
sys.path.insert(0, '/path/to/first/script')
from preprocessing import preprocess
x = preprocess(my_text)
最后,我最终得到了这个问题:
IOError: [Errno 2] No such file or directory: 'stopwords.txt'
问题肯定是' stopwords.txt'文件位于第一个脚本旁边,而不是第二个脚本。
有没有办法指定此文件的路径,而不是对脚本进行任何更改' preprocessing.py'?
谢谢。
答案 0 :(得分:1)
既然你在类似系统的* nix上运行,似乎为什么不用这个奇妙的环境将你的东西粘在一起呢?
cat stopwords.txt | python preprocess.py | python process.py
当然,您的脚本应该只使用标准输入,并生成标准输出。看到!删除代码并免费获取功能!
答案 1 :(得分:0)
最简单,也可能是最明智的方法是传递完整的文件名:
def preprocess(filename):
#...some code here
with open(filename) as sw:
for line in sw.readlines():
stop_words.add(something)
#...some more code than doesn't matter
return stop_words
然后你可以适当地调用它。
答案 2 :(得分:0)
看起来你可以把
import os
os.chdir('path/to/first/script')
在你的第二个脚本中。请试试。
答案 3 :(得分:0)
import os
def preprocess():
#...some code here
# get path in same dir
path = os.path.splitext(__file__)
# join them with file name
file_id = os.path.join(path, "stopwords.txt")
with open(file_id) as sw:
for line in sw.readlines():
stop_words.add(something)
#...some more code than doesn't matter
return stop_words