(My first posting seems to got lost) I want to create a zip file within a Python 2.7 program on windows.
My code: cmd = ['7za.exe','a','-tzip',archive] + files status = subprocess.call(cmd) leads to: File "fexit.py", line 971, in sendfile_retry status = subprocess.call(cmd) File "C:\Python27\lib\subprocess.py", line 522, in call return Popen(*popenargs, **kwargs).wait() File "C:\Python27\lib\subprocess.py", line 710, in __init__ errread, errwrite) File "C:\Python27\lib\subprocess.py", line 958, in _execute_child startupinfo) UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 87: ordinal not in range(128) This is because the array "files" contains filenames with non-ASCII characters. So, the problem is in subprocess.py, which I cannot modify. Instead of calling a 7z subprocess with non-ASCII arguments I tried to call it with a listfile: it starts with a "@" and contains the names of the files to be packed into the arcive. It is a special 7z feature. New code: fileslist = archive + '.list' flo = open(fileslist,'w') for file in files: print(file,file=flo) flo.close() cmd = ['7za.exe','a','-tzip',archive,'@'+fileslist] status = subprocess.call(cmd) But with that I get a new error: File "fexit.py", line 959, in sendfile_retry for file in files: print(file,file=flo) UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 8: ordinal not in range(128) I get the same error message, when i use: flo = open(fileslist,'wb') How can I tell open() or print() that I want to write non-ASCII ? -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum IZUS/TIK E-Mail: horlac...@tik.uni-stuttgart.de Universitaet Stuttgart Tel: ++49-711-68565868 Allmandring 30a Fax: ++49-711-682357 70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/ -- https://mail.python.org/mailman/listinfo/python-list