Steven Bethard wrote: > John Salerno wrote: >> Here's my new project: I want to write a little script that I can type >> at the terminal like this: >> >> $ scriptname package1 [package2, ...] >> >> where scriptname is my module name and any subsequent arguments are >> the names of Linux packages to install. Running the script as above >> will create this line: >> >> sudo aptitude install package1 package2 ... >> >> It will run that line at the terminal so the package(s) will be >> installed. >> >> Now, the extra functionality I want to add (otherwise I would just >> install them normally!) is to save the package names to a text file so >> I can now the names of programs I've manually installed, if I ever >> want to check the list or remove packages. >> >> So creating the proper bash command (sudo aptitude install ...) is >> easy, and writing the names to a file is easy. But I have two questions: >> >> 1. First of all, does Linux keep track of the packages you manually >> install? If so, then I won't have to do this at all. >> >> 2. Assuming I write this, how do output the bash command to the >> terminal? Is there a particular module that Python uses to interact >> with the terminal window that I can use to send the install command to >> the terminal? > > > I don't know the answer to the first bit here, but I think the following > should get you most of what you want as far as the second bit is concerned: > > > ---------------------------- scriptname.py ---------------------------- > import argparse # http://argparse.python-hosting.com/ > import subprocess > import sys > > def outputfile(filename): > return open(filename, 'w') > > if __name__ == '__main__': > # parse the command line arguments > parser = argparse.ArgumentParser() > parser.add_argument('packages', metavar='package', nargs='+', > help='one of the packages to install') > parser.add_argument('--save', type=outputfile, default=sys.stdout, > help='a file to save the package names to') > namespace = parser.parse_args() > > # call the command > command = ['sudo', 'aptitude', 'install'] + namespace.packages > subprocess.call(command) > > # write the package name file > for package_name in namespace.packages: > namespace.save.write('%s\n' % package_name) > ----------------------------------------------------------------------- > > > $ scriptname.py -h > usage: scriptname.py [-h] [--save SAVE] package [package ...] > > positional arguments: > package one of the packages to install > > optional arguments: > -h, --help show this help message and exit > --save SAVE a file to save the package names to > > > > STeVe
yikes! I'll have to take some time to study this! I appreciate it. :) -- http://mail.python.org/mailman/listinfo/python-list