Starting from:
$30

$24

Assignment 2 XML Dir Solution

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
dropXml.py — your Python3 script
Any other files needed
README (optional) — anything you want to tell us before we grade.

More products