Когда вы определяете функцию и вызываете ее, вы должны использовать return
, чтобы назначить ее чему-либо.
Но если ее row_format.format(*row)
вы хотите сохранить, откройте ее в функции:
def print_table(table,f):
longest_cols = [ (max([len(str(row[i])) for row in table]) + 2) for i in range(len(table[0]))]
row_format = "".join(["{:>" + str(longest_col) + "}" for longest_col in longest_cols])
for row in table:
f.write(row_format.format(*row))
f.close()
Теперь просто назовите это:
print_table(table,f)
Допустим, вы хотите добавить его построчно, затем используйте:
for row in table:
f.seek(0)
f.write("\n") #not possible if file opened as byte
f.write(row_format.format(*row))
Теперь, если вы этого хотите по-вашему, попробуйте:
def print_table(table):
longest_cols = [(max(
[len(str(row[i])) for row in table]) + 2)
for i in range(len(table[0]))]
row_format = "".join(["{:>" + str(longest_col) + "}"
for longest_col in longest_cols])
return '\n'.join(row_format.format(*row) for row in table)
Теперь назовите это:
x = print_table(table)
f.write(x)
f.close()