Python:跨模块写入相同的文件?

时间:2014-01-27 06:50:06

标签: python global fwrite

编辑3: 决定不在module2.function中使用write方法。我只是将我想写的东西传递给module1中的变量,然后在那里使用了write方法。更容易,他们现在按顺序写。再次感谢大家。

编辑2: 所以现在我对模块的写入工作,除了函数显示优先于module1代码:

f.write("bob")
module2.otherfunctionthatwrites(f)
module2.otherfunctionthatwrites(f)
f.write("bob")

按此顺序写:

writtenfrommodule2function
writtenfrommodule2function
bob
bob

而不是这个顺序:

bob
writtenfrommodule2function
writtenfrommodule2function
bob

知道会发生什么事吗?


感谢您回答以下问题:传递f - > module2.function1(F)。

假设我在module1中有一个主脚本:

import module2

filename = raw_input("What would you like to name the output file?: ")
with open(str(filename + ".txt"), "w") as f:
    f.write("Test2")

module2.function1()

所以,我正在使用从module2加载的函数。假设来自module2的function1()包含以下代码:

def function1():
    f.write("Test 3")

如何避免NameError:未定义全局名称f。即它没有意识到我已经告诉它早先在module1中写入哪个文件。我希望能够在module1中创建文件,然后重复使用module1中module2的函数,同时总是在这些函数中使用f.write()短手引用相同的文件。

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以将文件对象传递给function1()

但执行f块后,指针with的文件将被关闭。因此,在module2.function1()阻止后调用with将无效。

P.S。:在发布这个答案之前,我没有意识到@falsetru已经在评论中发布了答案。

答案 1 :(得分:1)

模块1 ----------------------

import module2

filename = raw_input("What would you like to name the output file?: ")
with open(str(filename + ".txt"), "w") as f:
    f.write("Test2")
    module2.function1(f)

模块2 ----------------------

def function1(f):
    f.write("Test 3")