Note that there are some explanatory texts on larger screens.

plurals
  1. POPython3: UnicodeEncodeError only when run from crontab
    text
    copied!<p>first post so be kind please, I have searched a lot around but most things I found are relevant to Python 2.</p> <p>I have a Python3 script that builds a zip file from a file list; it fails with UnicodeEncodeError only when the script is run from crontab, but it works flawlessly when run from interactive console. I guess there must be something in the environment but I just can't seem to figure out what.</p> <p>This is the code excerpt:</p> <pre><code>def zipFileList(self, rootfolder, filelist, zip_file, logger): count = 0 logger.info("Generazione file zip {0}: da {1} files".format(zip_file, len(filelist))) zip = zipfile.ZipFile(zip_file, "w", compression=zipfile.ZIP_DEFLATED) for curfile in filelist: zip.write(os.path.join(rootfolder, curfile), curfile, zipfile.ZIP_DEFLATED) count = count + 1 zip.close() logger.info("Scrittura terminata: {0} files".format(count)) </code></pre> <p>And this is the log output for this code fragment:</p> <pre class="lang-none prettyprint-override"><code>2012-07-31 09:10:03,033: root - ERROR - Traceback (most recent call last): File "/usr/local/lib/python3.2/zipfile.py", line 365, in _encodeFilenameFlags return self.filename.encode('ascii'), self.flag_bits UnicodeEncodeError: 'ascii' codec can't encode characters in position 56-57: ordinal not in range(128) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "XBE.py", line 45, in main pam.executeList(logger) File "/home/vte/vtebackup/vte41/scripts/ptActivityManager.py", line 62, in executeList self.executeActivity(act, logger) File "/home/vte/vtebackup/vte41/scripts/ptActivityManager.py", line 71, in executeActivity self.exAct_FileBackup(act, logger) File "/home/vte/vtebackup/vte41/scripts/ptActivityManager.py", line 112, in exAct_FileBackup ptfs.zipFileList(srcfolder, filelist, arcfilename, logger) File "/home/vte/vtebackup/vte41/scripts/ptFileManager.py", line 143, in zipFileList zip.write(os.path.join(rootfolder, curfile), curfile, zipfile.ZIP_DEFLATED) File "/usr/local/lib/python3.2/zipfile.py", line 1115, in write self.fp.write(zinfo.FileHeader()) File "/usr/local/lib/python3.2/zipfile.py", line 355, in FileHeader filename, flag_bits = self._encodeFilenameFlags() File "/usr/local/lib/python3.2/zipfile.py", line 367, in _encodeFilenameFlags return self.filename.encode('utf-8'), self.flag_bits | 0x800 UnicodeEncodeError: 'utf-8' codec can't encode character '\udcc3' in position 56: surrogates not allowed </code></pre> <p>This is the crontab line:</p> <pre><code>10 9 * * * /home/vte/vtebackup/vte41/scripts/runbackup.sh &gt;/dev/null 2&gt;&amp;1 </code></pre> <p>And this is the content of runbackup.sh:</p> <pre><code>#! /bin/bash -l cd /home/vte/vtebackup/vte41/scripts /usr/local/bin/python3.2 XBE.py </code></pre> <p>The file on which the exception happens is always the same, but it doesn't seem to include any non ascii chars:</p> <pre><code>/var/vhosts/vte41/http_docs/vtecrm41/storage/2012/July/week4/169933_Puccini_Gabriele.tif </code></pre> <p>OS is Ubuntu Linux LTS 10.04, Python version 3.2 (installed side by side as altinstall with other Python versions). All Python source files have this shebang</p> <pre><code>#!/usr/bin/env python3.2 </code></pre> <p>as very first line</p> <p>Can you help me finding what's wrong and how to fix this problem?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload