Strategy/ Advice for How to Best Attack this Problem?
Saran A
ahlusar.ahluwalia at gmail.com
Wed Apr 1 09:43:45 EDT 2015
On Tuesday, March 31, 2015 at 9:19:37 AM UTC-4, Dave Angel wrote:
> On 03/31/2015 07:00 AM, Saran A wrote:
>
> > @DaveA: This is a homework assignment. .... Is it possible that you
> could provide me with some snippets or guidance on where to place your
> suggestions (for your TO DOs 2,3,4,5)?
> >
>
>
> > On Monday, March 30, 2015 at 2:36:02 PM UTC-4, Dave Angel wrote:
>
> >>
> >> It's missing a number of your requirements. But it's a start.
> >>
> >> If it were my file, I'd have a TODO comment at the bottom stating known
> >> changes that are needed. In it, I'd mention:
> >>
> >> 1) your present code is assuming all filenames come directly from the
> >> commandline. No searching of a directory.
> >>
> >> 2) your present code does not move any files to success or failure
> >> directories
> >>
>
> In function validate_files()
> Just after the line
> print('success with %s on %d reco...
> you could move the file, using shutil. Likewise after the failure print.
>
> >> 3) your present code doesn't calculate or write to a text file any
> >> statistics.
>
> You successfully print to sys.stderr. So you could print to some other
> file in the exact same way.
>
> >>
> >> 4) your present code runs once through the names, and terminates. It
> >> doesn't "monitor" anything.
>
> Make a new function, perhaps called main(), with a loop that calls
> validate_files(), with a sleep after each pass. Of course, unless you
> fix TODO#1, that'll keep looking for the same files. No harm in that if
> that's the spec, since you moved the earlier versions of the files.
>
> But if you want to "monitor" the directory, let the directory name be
> the argument to main, and let main do a dirlist each time through the
> loop, and pass the corresponding list to validate_files.
>
> >>
> >> 5) your present code doesn't check for zero-length files
> >>
>
> In validate_and_process_data(), instead of checking filesize against
> ftell, check it against zero.
>
> >> I'd also wonder why you bother checking whether the
> >> os.path.getsize(file) function returns the same value as the os.SEEK_END
> >> and ftell() code does. Is it that you don't trust the library? Or that
> >> you have to run on Windows, where the line-ending logic can change the
> >> apparent file size?
> >>
> >> I notice you're not specifying a file mode on the open. So in Python 3,
> >> your sizes are going to be specified in unicode characters after
> >> decoding. Is that what the spec says? It's probably safer to
> >> explicitly specify the mode (and the file encoding if you're in text).
> >>
> >> I see you call strip() before comparing the length. Could there ever be
> >> leading or trailing whitespace that's significant? Is that the actual
> >> specification of line size?
> >>
> >> --
> >> DaveA
> >
> >
>
> > I ask this because I have been searching fruitlessly through for some time and there are so many permutations that I am bamboozled by which is considered best practice.
> >
> > Moreover, as to the other comments, those are too specific. The scope of the assignment is very limited, but I am learning what I need to look out or ask questions regarding specs - in the future.
> >
>
>
> --
> DaveA
@DaveA
My most recent commit (https://github.com/ahlusar1989/WGProjects/blob/master/P1version2.0withassumptions_mods.py) has more annotations and comments for each file.
I have attempted to address the functional requirements that you brought up:
1) Before, my present code was assuming all filenames come directly from the commandline. No searching of a directory. I think that I have addressed this.
2) My present code does not move any files to success or failure directories (requirements for this assignment1). I am still wondering if and how I should use shututil() like you advised me to. I keep receiving a syntax error when declaring this below the print statement.
3) You correctly reminded me that my present code doesn't calculate or write to a text file any statistics or errors for the cause of the error. (Should I use the copy or copy2 method in order provide metadata? If so, should I wrap it into a try and except logic?)
4) Before, my present code runs once through the names, and terminates. It doesn't "monitor" anything. I think I have addressed this with the main function - correct?
5) Before, my present code doesn't check for zero-length files - I have added a comment there in case that is needed)
I realize appreciate your invaluable feedback. I have grown a lot with this assignment!
Sincerely,
Saran
More information about the Python-list
mailing list