编辑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()短手引用相同的文件。
有什么想法吗?谢谢。
答案 0 :(得分:1)
您可以将文件对象传递给function1()
。
但执行f
块后,指针with
的文件将被关闭。因此,在module2.function1()
阻止后调用with
将无效。
P.S。:在发布这个答案之前,我没有意识到@falsetru已经在评论中发布了答案。
答案 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)
def function1(f):
f.write("Test 3")