Запись в файл открывается во второй функции (Python) - PullRequest
6 голосов
/ 29 октября 2011

У меня в настоящее время есть функция ниже в моем коде: -

def openFiles():
    file1 = open('file1.txt', 'w')
    file2 = open('file2.txt', 'w')

То, что я надеюсь сделать сейчас, во втором методе - записать в открытый файл.Однако всякий раз, когда я пытаюсь записать файлы с использованием, например, file1.write ("hello") ", возвращается ошибка, сообщающая мне, что "global variable 'file1' is not defined".Я пытался объявить 'file1' как строку в начале моего кода, но, очевидно, поскольку это не строка, а объект, я не уверен, как записать в нее.

Есть предложения?Я хочу, чтобы ряд функций имел доступ к файлам, поэтому мне нужна отдельная функция, которая их открывает.

Спасибо

Отредактировано для представления класса

class TestClass:
    def openFiles():
        file1 = open('file1.txt', 'w')
        file2 = open('file2.txt', 'w')

    def write_to_files():
        ????????

1 Ответ

9 голосов
/ 29 октября 2011

Вы можете использовать глобальное ключевое слово python, как показано ниже.

def openFiles():
    global file1
    global file2
    file1 = open('file1.txt', 'w')
    file2 = open('file2.txt', 'w')

def writeFiles():
    file1.write("hello")

openFiles()
writeFiles()

Однако я бы порекомендовал вам вместо этого использовать класс. Например.

class FileOperations:
    def open_files(self):
        self.file1 = open('file1.txt', 'w')
        self.file2 = open('file2.txt', 'w')

    def write_to_files(self):
        self.file1.write("hello")

Затем вы можете сделать:

>>> fileHandler = FileOperations()
>>> fileHandler.open_files()
>>> fileHandler.write_files()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...