在另一个python脚本中运行python脚本

时间:2017-02-28 15:19:02

标签: python python-2.7

我有一个脚本' 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'?

谢谢。

4 个答案:

答案 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