我正在构建一个需要对多个文件进行操作的函数,方法如下:
def myfuntion(filenames):
n = len(filenames)
if n > 0:
data = fits.open(filenames)
for i in range(1,n):
final = *DO SOMETHING FOR EACH FILE*
return final
我们的想法是使用多个文件调用该函数:
mean_myfuntion(['file1.fits', 'file2.fits', 'file3.fits'])
然而问题是我收到以下错误:
OSError: File-like object does not have a 'write' method, required for mode 'ostream'.
而且我不确定发生了什么。我怀疑我在调用文件名时遗漏了一些东西( data = fits.open(文件名) ),如果你们有任何建议,那就更多了比欢迎。
谢谢!
答案 0 :(得分:1)
您的代码存在的问题是,您要list
作为fits.open()
的文件,但str
是必需的:
见Docs。
因此,您需要遍历列表以逐个获取文件名为'str'。
def myfuntion(filenames):
n = len(filenames)
if n > 0:
for file in filenames:
data = fits.open(file)
final = *DO SOMETHING FOR EACH FILE*
return final
答案 1 :(得分:0)
在文件上调用open
。您这样做是为了列表
您可以使用相同的效果测试列表的真实性 - 此处不需要len
您可以使用yield
语法从函数中为每个文件返回多个值
def myfuntion(filenames):
if not filenames:
return None
for file in filenames:
data = fits.open(file)
final = ... # DO SOMETHING FOR EACH FILE
yield final
答案 2 :(得分:-1)
尝试with open
,如下所示:
with open(file, 'r') as f:
# *DO SOMETHING FOR EACH FILE*