ValueError: zero length field name in format - Running under Python 2.7.3?


V

Victor Hooi

Hi,

I have a Python script that's using a format string without positional specifiers. I.e.:

LOG_FILENAME = 'my_something_{}.log'.format(datetime.now().strftime('%Y-%d-%m_%H.%M.%S'))

I'm running this from within a virtualenv, running under Python 2.7.3.

$ python -V
Python 2.7.3
$ which python
/opt/my_project_venv/bin/python

The first line of the script is:

#!/usr/bin/env python

However, when I run this line, I get the following error:

Traceback (most recent call last):
File "my_script.py", line 25, in <module>
LOG_FILENAME = 'my_something_{}.log'.format(datetime.now().strftime('%Y-%d-%m_%H.%M.%S'))
ValueError: zero length field name in format


The weird thing, when I start a Python REPL and run that line interactively, it works fine:

$ python
Python 2.7.3 (default, Jan 7 2013, 11:52:52)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.my_project_2013-05-11_09.29.47.log

My understanding was that in Python 2.7/3.1, you could omit the positional specifiers in a format string.



Cheers,
Victor
 
Ad

Advertisements

C

Chris Angelico

However, when I run this line, I get the following error:

Traceback (most recent call last):
File "my_script.py", line 25, in <module>
LOG_FILENAME = 'my_something_{}.log'.format(datetime.now().strftime('%Y-%d-%m_%H.%M.%S'))
ValueError: zero length field name in format


The weird thing, when I start a Python REPL and run that line interactively, it works fine

Google tells me that that was an issue in Python 2.6, so my first
check would be to see what `/usr/bin/env python` actually gives you -
are you running inside an environment that changes your path? Drop a
"import sys; print(sys.version)" at the top of your script and see
what it's really running as.

ChrisA
 
Ad

Advertisements

V

Victor Hooi

Hi,

You're right - it was sudo playing up with the virtualenv.

The script was in /opt, so I was testing with sudo to get it to run.

I should have setup a service account, and tested it with that =).

$ python sync_bexdb.py
2.7.3 (default, Jan 7 2013, 11:52:52)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]

$ sudo python sync_bexdb.py
[sudo] password for victor:
2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

Cheers,
Victor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top