I think you must specify a length for the strings, otherwise the length defaults to zero.
import numpy
timefile_dtype=numpy.dtype([
('filename', file),
('year', int),
('month', str, 25),
('day', int),
('time', str, 25),
('int_time', int),
('unit', str, 25),
('avg', int),
('boxcar', int),
])
a = numpy.zeros((1,), dtype=timefile_dtype)
x = a[0]
x['filename'] = "hello.txt"
x['month'] = 'August'
print x.dtype
print x
""" my output -->
[('filename', '|O8'), ('year', '<i8'), ('month', '|S25'), ('day', '<i8'), ('time', '|S25'), ('int_time', '<i8'), ('unit', '|S25'), ('avg', '<i8'), ('boxcar', '<i8')]
('hello.txt', 0, 'August', 0, '', 0, '', 0, 0)
"""