subprocess.call with non-ASCII arguments?

Ulli Horlacher framstag at rus.uni-stuttgart.de
Tue Dec 15 09:25:50 EST 2015


(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: horlacher at 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/



More information about the Python-list mailing list