2015-04-29 3 views
0

Почему последнее утверждение не удается?Как обновить выход stavfs

>>> import posix 
>>> os.statvfs('/boot') 
posix.statvfs_result(f_bsize=1024, f_frsize=1024, f_blocks=495844L, f_bfree=412223L, f_bavail=386623L, f_files=128016L, f_ffree=127969L, f_favail=127969L, f_flag=4096, f_namemax=255) 
>>> posix.statvfs_result(f_bsize=1024, f_frsize=1024, f_blocks=495844L, f_bfree=412223L, f_bavail=386623L, f_files=128016L, f_ffree=127969L, f_favail=127969L, f_flag=4096, f_namemax=255) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: structseq() takes at most 2 arguments (10 given) 

«Система» просит объяснить, почему моя проблема отличается от возможного дубликата. Дело не только в том, что моя проблема в том, что разные, я просто считаю, что предоставление прямого решения здесь лучше по прагматическим причинам: ответ на другой вопрос не ясно устанавливает, что происходит, и при этом сохраняет объем ответа узкий и более сложный для обобщения.

+0

Возможный дубликат ошибки [structseq() с time.struct \ _time] (http://stackoverflow.com/questions/9551514/structseq-error-with-time-struct-time) – myaut

ответ

2

Благодаря дублирующему предложению я смог перенести его решение на свою проблему.

Изменение

posix.statvfs_result(f_bsize=1024, f_frsize=1024, f_blocks=495844L, f_bfree=412223L, f_bavail=386623L, f_files=128016L, f_ffree=127969L, f_favail=127969L, f_flag=4096, f_namemax=255) 

в

posix.statvfs_result((1024, 1024, 495844L, 412223L, 386623L, 128016L, 127969L, 127969L, 4096, 255)) 

решает мою проблему:

>>> posix.statvfs_result((1024, 1024, 495844L, 412223L, 386623L, 128016L, 127969L, 127969L, 4096, 255)) 
posix.statvfs_result(f_bsize=1024, f_frsize=1024, f_blocks=495844L, f_bfree=412223L, f_bavail=386623L, f_files=128016L, f_ffree=127969L, f_favail=127969L, f_flag=4096, f_namemax=255) 

Так, чтобы сделать это более полным и удобным, вот как преобразование в кортеж позволяет воссоздавать результаты от os.statvfs:

>>> tuple(os.statvfs('/boot')) 
(1024, 1024, 495844L, 412223L, 386623L, 128016L, 127969L, 127969L, 4096, 255) 
>>> posix.statvfs_result(tuple(os.statvfs('/boot'))) 
posix.statvfs_result(f_bsize=1024, f_frsize=1024, f_blocks=495844L, f_bfree=412223L, f_bavail=386623L, f_files=128016L, f_ffree=127969L, f_favail=127969L, f_flag=4096, f_namemax=255)