我正在编写一个接受文件对象的函数,例如
def my_fn(file_obj):
assert <what expression here?>, "file_obj must be opened with newline=''."
...
我要在函数中做的第一件事是确保使用
newline=''
打开传入的文件对象。我该怎么做呢?谢谢。PS。我相信这个问题仅适用于Python 3,因为
newline=''
仅存在于Python 3中(请注意,它与默认的newline=None
不同)。 最佳答案
如果不使用ast在运行时解析源,我认为从文件对象中获取信息将不容易或根本不可能,您可以通过读取一行然后检查换行来确保换行符为None
或""
。 newlines属性,但我不确定newlines
属性是否始终可用:
next(f)
if f.newlines is None:
raise ValueError("...")
else:
f.seek(0)
但是,如果您只能接受带有文件名的函数中的文件对象并自己打开文件,那么您将可以控制:
def open_fle(f, mode="r"):
with open(f, mode=mode, newline="") as f:
.....
关于python - 在Python中,如何断言传入的文件对象是使用换行符=''打开的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30985523/