Assignment XML Dir Solution

$30.00

Category:

Description

Introduction

Redo the previous assignment in Python (with some extra specs).

You are now familiar with the problem domain. You can gain practise doing file processing in Python.

Your task is to recurse through a subtree of the filesystem and put a file called dir.xml in each directory. You will pull data from 2 sources: the directory itself, and a file that may appear in each directory called README .

We’ve expanded the filetypes you need to worry about. See below.

Sample Directory

See tux:/home/kschmidt/public_html/CS265/Assignments/Python-Dir2XML/Test_Dir . Here is what the directory looks like:

Test_Dir:

index.html

myPipe

mySocket

Files/

Labs/

README

labs.html

1/

README

file1.1

file1.2

file1.3

index.html

other4

other5

2/

Data/

README

a

b

c

README

file2.1

file2.2

index.html

other1

other4

other5

3/

README

file3.1

file3.2

file3.3

file3.4

index.html

other4

Lectures/

README

lecs.html

Copy over createTestDirs from the assignment directory, run it. It will provide a consistent directory subtree, as above, with randomly placed named sockets (aSocket) and names pipes (aPipe).

README

The README file may have 2 entries, each on its own line. Fields are separated by colons. Neither entry is required:

  • index – lists a single file, the top-level HTML page for this directory.
  • required – a colon-separated list of files that should be in this directory

 

To Do

You will write a script (or, scripts) that will take an optional argument, the directory to process. If not argument is supplied, use the current directory.

In each subdirectory (including the top-level directory on which the script was called) you will place a file called dir.xml . If it already exists, simply overwrite it. Do not include it as one of the files listed.

The root element will be direntry. It may contain up to 3 child nodes: index, required, and other. index will only contain a file. The remaining two might contain text elements:

<file> Regular file (or, symlink)
<dir> Directory
<fifo> A named pipe
<sock> A socket

Index and required data will be harvested from README. Other files will be found by taking a listing of the directory, looking for files or directories that weren’t listed in README.

For example, the following file would be placed in CS265/Labs/2 :

dir.xml

 

Thoughts

It is preferrable to hand in a working program that addresses part of the problem than a mess that attempts the entire problem.

  • Use small functions
  • Implement 1 task at a time
    • Test it, separately. Should be easy to do with functions
    • When working, gather your small functions together to complete the larger task
  • No function should be very long
  • Keep your code neat, legible, logical
  • Overall appeal of your source code will be part of the grade. Style matters
    • Appropriate comments, including the file header(s)

You might want to consider os.walk, for flipping through directories. See os_walk.py . Some other useful functions, maybe: os.path.join os.path.abspath os.stat . See stat.py

Folks, please don’t spend a lot of time writing me 18 different classes. My solution contains no user-defined classes, though there is 1 fairly obvious candidate, if you have that itch.

 

Submission

Do not submit temporary files, nor your test data. Just the required scripts, and any helper files.

What to hand in

  • py — your Python3 script
  • Any other files needed
  • README (optional) — anything you want to tell us before we grade.

 


error: Content is protected !!