Using Python for a redundant directory listing

A client asked me about help on a Python script. I jumped into my seat and excited typed “OF COURSE!!”, more excited than Dug getting to play fetch.

She was using Python to run a DOS command. This isn’t a horrible way to do things, actually, it is a horrible way to do things so I tried to ween her off this and use a more Pythonic way of doing it. (Okay, full disclosure, I use this for my scripts so they stay live after they’re finished:)

os.system("pause")

I didn’t get the entire code, but this was what she eventually came up with that worked:

subprocess.call(["dir"+"/O:-D/A:-D",bookingFilePath1, ">>","tmp2.txt"], shell=True )

It’s cool that she’s using the subprocess but this isn’t the “Python” way of doing things. At the very least, if you get the result you need without a bug then that should suffice. But being a Pythonista means delving deeper until you come up with the most Python-like solution.

What I came up with is the following, which worked perfectly and is mostly Pythonic:

import os

targpath = "C:\\users\\ReedActed\\desktop\\" # To direct location of target file

with open(targpath + 'P-drive-test.txt', 'w', encoding='utf-8') as outfile:
  for r, d, f in os.walk('P:\\backup\\'):
    for file in f:
     fileneat = os.path.join(r, file) + "\n"
     outfile.write(fileneat)

Regrettably, she found out what her error was and continued to use the DOS command in Python rather than use Python’s native libraries. *SIGH*

Hello Wo– nope, not going to say that!

The phrase that rhymes with “Mellow Whirled” has been BANNED from anything I write involving programming! I’ve read books that show you how to print “He*lo W*rld” on the screen, how to make “He*lo Wo*ld” in all caps, all lower case, reversed order, etc. But I’m sick of these exercises. On this website you’ll only see PRACTICAL uses of programming to solve real problems. So now, the phrase that sounds like “Shmellow Curled” will NOT be used here.