我正在尝试编写一个方法,该方法将接受打开的文件
myFile = open("myFile.txt")
obj.writeTo(myFile)
myFile.close()
或带有路径的字符串
obj.writeTo("myFile.txt")
该方法的实现如下:
def writeTo(self, hessianFile):
if isinstance(hessianFile,file):
print("File type")
elif isinstance(hessianFile,str):
print("String type")
else:
pass
但这会引发错误
NameError: global name 'file' is not defined
为什么未定义文件类型?文件不应该一直被定义吗?应该如何纠正实现以正确处理文件的路径作为有效的参数类型
Python 3 中没有名为
file
的内置类型。在 Python 2 中,
file
用于表示文件对象。但是,此方法已弃用,并且在 Python 3 中不再存在。
以下是接受文件或路径作为输入的更 Pythonic 的方法:
def writeTo(self, hessianFile):
"""写入文件或给定路径的文件。
Args:
hessianFile: 要么是文件对象,要么是文件路径(字符串)。
"""
if isinstance(hessianFile, str):
with open(hessianFile, 'w') as f:
# 在此处写入文件 'f'
print("写入文件:", hessianFile)
else:
# 假设 hessianFile 是一个文件对象
# 在此处写入文件 'hessianFile'
print("写入文件对象")
此代码执行以下操作:
-
它检查
hessianFile
是否是字符串。如果是,则使用open()
函数打开文件以进行写入('w'
模式)。这确保即使在写入过程中发生错误,该文件也会正确关闭。 -
如果
hessianFile
不是字符串,则代码假定它是一个文件对象,并直接写入。
使用方法:
# 使用文件路径:
obj.writeTo("myFile.txt")
# 使用文件对象:
with open("myFile.txt", "w") as my_file:
obj.writeTo(my_file)
此方法提供了灵活性和代码安全性的良好平衡。
标签:python,file From: 10692663