This code not working, need suggetions

Min Yu yumineer at gmail.com
Mon Apr 23 05:51:08 EDT 2012


try this code out. The lsdir function and cat function are both used in
main().

The bash commands are as following:

yumin at yumin-think:~/src/test/python/community$ python list.py `pwd`
/home/yumin/src/test/python/community
list.py
file1
file2
Which file would you like to browse ?file1
This is file1
Which file would you like to browse ?file2
This is file2
Which file would you like to browse ?
yumin at yumin-think:~/src/test/python/community$
--------------------------------------------------------------------------------------------------------------------------
#!/usr/bin/python


import os
import sys
import commands
#import cat

def listdir(s):
    try:
        print s
        files  = os.listdir(s)
        for f in files:
            #path = os.path.join(s, f)
            #print path
            print f
    except OSError:
        print "No such file or directory"

def cat(get_file):
    f = open(get_file, "rU")
    text = f.read()
    print text,

def main():
    working_dir = sys.argv[1]
    listdir(working_dir)
    On = True
    while On:
        get_file = raw_input("Which file would you like to browse ?")
        if get_file == '':
            On = False
            #break
        else:
            cat(os.path.join(working_dir,get_file))

if __name__ == "__main__":
    main()



2012/4/23 Chris Rebert <clp2 at rebertia.com>

> On Sun, Apr 22, 2012 at 11:16 PM, Anirudh Srinivasan <anirudh at nutanix.com>
> wrote:
> >
> > My code lists the files and directory under a folder and if we want to
> > read the file it uses the function  cat.
> >
> > But the function cat(get_file) is not working , any suggetions?
>
> Please specifically state exactly how it's deviating from the desired
> behavior (including the full text of any error messages and/or
> exception tracebacks, though I don't think those will apply here).
> I note that you don't actually call cat() anywhere in your program.
>
> > Here is my code:
> >
> >
> > #!/usr/bin/python
> >
> > import os
> > import sys
> > import commands
> > #import cat
>
> Such an import (if uncommented) would require you had a *module* named
> `cat`.
>
> > def listdir(s):
>
> I would suggest renaming this function to avoid confusion with
> os.listdir().
>
> >    try:
> >       file  = os.listdir(s)
>
> Don't use `file` as a variable name. It shadows the name of the
> built-in `file` type.
> Also, `file` isn't a sensible variable name in this context; it's a
> list (as opposed to a single item) and may also contain directory
> names. And it contains strings rather than file objects.
>
> >       for files in file:
> >               path = os.path.join(s, files)
> >               print path
> >               #cmd = 'ls -l '+ path
> >               #g= commands.getstatusoutput(cmd)
>
> The `commands` module has been deprecated. Its successor is `subprocess`:
> http://docs.python.org/library/subprocess.html
>
> >               #print g[1]
> >    except OSError:
> >               print "No such file or directory"
> >
> >
> > def main():
> >       listdir(sys.argv[1])
> >
> >
> > if __name__ == "__main__":
> >       main()
>
> `if __name__ == "__main__":` should normally come at the end of the
> script, after all `def`s.
>
> >
> > def cat(get_file):
> >       f = open(get_file, "rU")
> >       text = f.read()
> >       print text,
>
> You should `.close()` the file once you're done with it. Or use the
> `with` statement (http://www.python.org/dev/peps/pep-0343/ ).
>
> > get_file = raw_input("Which file would you like to browse ?")
>
> Presumably this line should be under your `if __name__ ==
> "__main__":`? And you're not actually doing anything with `get_file`
> after you obtain it from the user...
>
> Regards,
> Chris
> --
> http://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20120423/26fb4945/attachment-0001.html>


More information about the Python-list mailing list