Tim Michelsen wrote:
Hello,
I am working on a automatic documentation program to convert my txt2tags based documentations sources into HTMl files. I want to use txt2tags via command line.

Here's my code:

#####

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import subprocess
import fnmatch

documentation_directory = './doc/'

for file in os.listdir(documentation_directory):
    if fnmatch.fnmatch(file, '*.t2t'):
        print file
        subprocess.call('txt2tags', '-t html', '--toc')

##### END ####

When I run the script it exits with the following error message:

#### START OUTPUT ####
python ./make_documentation.py
index.t2t
Traceback (most recent call last):
  File "./make_documentation.py", line 12, in <module>
    subprocess.call('txt2tags', '-t html', '--toc')
  File "/usr/lib/python2.5/subprocess.py", line 444, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.5/subprocess.py", line 545, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer
#### END OUTPUT ####

Whenever you're running subprocess.call and you see this
error, say to yourself: "Have I passed the command line
as one parameter in a list; or have I passed it as a series
of parameters?" Because I can't remember the number of times
I've made that mistake myself. Basically, subprocess.call expects
either a string or a list of strings as the first param, and
then the second one is the bufsize, an integer. And then there
are others (check the params to subprocess.Popen). You're passing
a string -- your second param -- as the second parameter, and it's
not an integer. So you get a TypeError.

Simple, no?

TJG
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to