1

我有两个 python 脚本,一个用于处理数据,另一个用于创建反映已处理数据的 HTML 报告。

测试1.py:

def test(self):
    for i in data:
        if data is this:
            data[1] = something
        if data is that:
            data[1] = something
        else:
            data[1] = something else

测试2.py:

OutFile = open("C:/path/../result.html", "w")

print "Content-type:text/html\r\n\r\"
# want to print data[1] value here

data[1]将值传递到from test1.pyto的最佳方法是什么test2.py?我可以将 using 参数传递给test2.py吗?

4

2 回答 2

3

您可以从函数中返回它:

class MyClass():
    data = some_data
    def test(self):
        for i in data:
            if data is this:
                data[1] = something
            if data is that:
                data[1] = something
            else:
                data[1] = something else
            return data

在 中test2.py,抓住并将其放在某处:

from test1 import MyClass
my_instance = MyClass()
data = my_instance.test()
print(data[1])

备选方案 1

将其作为变量放入MyClass

class MyClass():
    data = some_data
    def test(self):
        for i in self.data:
            if self.data is this:
                self.data[1] = something
            if data is that:
                self.data[1] = something
            else:
                self.data[1] = something else

在 中test2.py,将其作为 的属性my_instance

from test1 import MyClass
my_instance = MyClass()
my_instance.test()
print(my_instance.data[1])

备选方案 2

如果您想独立运行这两个脚本,您可以test1将数据放在可以通过test2. 例如,在一个文件中:

class MyClass():
        data = some_data
        def test(self):
            for i in data:
                if data is this:
                    data[1] = something
                if data is that:
                    data[1] = something
                else:
                    data[1] = something else
            with open('data.txt', 'w') as f:
                f.writelines(data)

现在,您可以轻松地从第二个脚本中获得它:

with open('data.txt') as f:
    data = f.readlines()
print (data[1])

实现这一点并不难。

希望这可以帮助!

于 2013-11-04T22:09:52.877 回答
0

一种选择是使用 pythonpickle包:

import pickle
#in py1
pickle.dump(data, open(some_dir + "data.pkl","wb"))
#in py2
data = pickle.load(open(some_dir + "data.pkl","rb"))

虽然我不确定你的名单有多大;这对于大量列表来说会很慢。如果它只是几个值,那么开销将不存在。

于 2013-11-04T22:11:14.303 回答