EDIT 3: Решено не использовать метод записи внутри модуля2.функция. я просто передал вещи, которые мне нужны, чтобы записать переменные в module1, а затем использовал метод записи. намного проще, и они пишут в порядке сейчас. Еще раз спасибо всем.Python: Запись в один файл через модули?
EDIT 2: Так что теперь у меня есть запись во модулей обработки, за исключением того, что функции отображения приоритет над кодом Module1:
f.write("bob")
module2.otherfunctionthatwrites(f)
module2.otherfunctionthatwrites(f)
f.write("bob")
пишет в таком порядке:
writtenfrommodule2function
writtenfrommodule2function
bob
bob
вместо настоящего заказа:
bob
writtenfrommodule2function
writtenfrommodule2function
bob
любая идея wh в может продолжаться?
Спасибо, что ответили на старый вопрос: передайте 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. говорят, что function1(), из module2, содержит этот код:
def function1():
f.write("Test 3")
Как бы избежать NameError: глобальное имя е не определено. т.е. он не признает, что я уже сказал ему, какой файл писать раньше в модуле1. Я хотел бы иметь возможность создать файл в модуле1 и все же многократно использовать функции из модуля2 в модуле1, всегда ссылаясь на тот же файл с короткой рукой f.write() внутри этих функций.
Любые идеи? Спасибо.
Почему вы не передаете объект файла функции 'function1':' function1 (f) '. 'def function1 (f): f.write (" Test 3 ")'. BTW, вызов функции должен выполняться внутри блока 'with'. В противном случае попытка записи в закрытый файл вызовет исключение. – falsetru
Я хотел бы добавить к тому, что сказал @falsetru: это очень плохая практика - использование глобальных переменных в функциях (исключение может быть CONSTANT, которое вы импортировали в модуль, где определена функция), тем более, что вы импортируете функцию - и используете глобальные переменная от модуля импорта. – volcano
спасибо за ответ. прошел f действительно. однако, я записываю arent, происходящий в порядке основного кода модуля. вызываемые модули2.функции записываются до f.write() s в моем основном модуле, даже когда вызываются функции module2.functions после основного модуля f.write(). Есть идеи? – InfinteScroll