@@ -313,14 +313,7 @@ def write_dirs(self, *base_dirs, prefix=None, timestamp=None):
313
313
self ._logger .info ("adding content of directory '%s'" , base_dir )
314
314
for path in emit_dir_content (base_dir ):
315
315
arcname = os .path .relpath (path , base_dir )
316
- self ._logger .info ("adding '%s'" , arcname )
317
- zinfo = self ._make_zinfo_from_file (path , arcname )
318
- if timestamp is None :
319
- timestamp = self .timestamp
320
- date_time = self ._timestamp_to_date_time (timestamp )
321
- if date_time :
322
- self ._update_zinfo (zinfo , date_time = date_time )
323
- self ._write_zinfo (zinfo , path )
316
+ self ._write_file (path , prefix , arcname , timestamp )
324
317
325
318
def write_files (self , files_stream , prefix = None , timestamp = None ):
326
319
"""
@@ -335,7 +328,20 @@ def write_file(self, file_path, prefix=None, name=None, timestamp=None):
335
328
or a full qualified name in a zip archive
336
329
"""
337
330
self ._ensure_open ()
338
- raise NotImplementedError
331
+ self ._write_file (file_path , prefix , name , timestamp )
332
+
333
+ def _write_file (self , file_path , prefix = None , name = None , timestamp = None ):
334
+ arcname = name if name else os .path .basename (file_path )
335
+ if prefix :
336
+ arcname = os .path .join (prefix , arcname )
337
+ self ._logger .info ("adding '%s'" , arcname )
338
+ zinfo = self ._make_zinfo_from_file (file_path , arcname )
339
+ if timestamp is None :
340
+ timestamp = self .timestamp
341
+ date_time = self ._timestamp_to_date_time (timestamp )
342
+ if date_time :
343
+ self ._update_zinfo (zinfo , date_time = date_time )
344
+ self ._write_zinfo (zinfo , file_path )
339
345
340
346
def write_file_obj (self , file_path , data , prefix = None , timestamp = None ):
341
347
"""
0 commit comments