在第二个函数中写入已打开的文件(Python)

7

我目前的代码中有以下的函数:

def openFiles():
    file1 = open('file1.txt', 'w')
    file2 = open('file2.txt', 'w')
我希望做的第二件事是写入打开的文件。但是,每当我尝试使用例如“file1.write(“hello”)”写入文件时,会返回一个错误,提示“全局变量'file1'未定义”。我已经尝试在代码开头将'file1'声明为字符串,但显然它不是字符串而是对象,我不确定如何向其写入内容。 有什么建议吗?我希望许多函数都能访问这些文件,因此希望有一个单独的函数来打开它们。 谢谢 编辑以表示类
class TestClass:
    def openFiles():
        file1 = open('file1.txt', 'w')
        file2 = open('file2.txt', 'w')

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

你必须要么创建一个类,要么在打开文件的函数内部写入它们。 - Griffin
原始问题已编辑为包含一个类。现在我该如何在类内引用对象? - thefragileomen
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
9
您可以使用如下的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()

原始问题已编辑为包含一个类。现在我如何在类内引用对象? - thefragileomen
现在我该如何调用这些函数呢?例如,当我尝试调用 open_files 函数时,它告诉我需要一个参数。我已经尝试使用 'self',但是它并不起作用。再次感谢。 - thefragileomen
2
@thefragileomen 声明 x = FileOperations(),然后执行 x.open_files()x.write_to_files() - Griffin
感谢你们三位,非常感激 :) - thefragileomen
顺便提一下,如果您真的要打开硬编码文件(例如,您尝试打开的文件名称从不更改),最好将open_filewrite_to_file方法声明为静态,并从类本身使用它们。 - brc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,