wal*_*rus 10 python python-3.x
我正在编写一个接收文件对象的函数,例如
def my_fn(file_obj):
assert <what expression here?>, "file_obj must be opened with newline=''."
...
Run Code Online (Sandbox Code Playgroud)
我想在函数中做的第一件事就是确保传入的文件对象是用它打开的newline=''.我该怎么做呢?谢谢.
PS.我相信这个问题仅适用于Python 3,因为newline=''它只存在于Python 3中(注意它与默认值不同newline=None).
如果不使用 ast 在运行时解析源代码,我认为从文件对象获取信息不会很容易或根本不可能,您可以确保换行符是None或""通过读取一行然后检查换行符属性但我不确定该newlines 属性是否始终可用:
next(f)
if f.newlines is None:
raise ValueError("...")
else:
f.seek(0)
Run Code Online (Sandbox Code Playgroud)
但是,如果您只能从带有文件名的函数接受文件对象并自己打开文件,这样您就可以控制:
def open_fle(f, mode="r"):
with open(f, mode=mode, newline="") as f:
.....
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |