noobie mkdir problem/question

P

ProvoWallis

Hi,

I'm trying to write a script that will create a new directory and then
write the results to this newly created directory but it doesn't seem
to work for me and I don't know why. I'm hoping someone can see my
mistake or at least point me in the right direction.

I start like this capturing the root directory and making my new
"xrefs" directory (I can see the new folder in windows explorer):

root = raw_input("Enter the path where the program should run: ")

xrefs = os.path.join(root,'xrefs')

if (os.path.isdir(xrefs) == 0):
os.mkdir(xrefs)
else:
sys.exit('LOG folder already exists. Exiting program.')

....I do everything else...

And then I'm trying to write the results out to xrefs. But instead of
writing to xrefs they're written to the original directory, i.e., root.
and I'm not sure why.

outputFname = given + '.log'
outputFile = open(os.path.join(xrefs,outputFname), 'w')
outputFile.write(data)
outputFile.close()

Anyone?

Thanks,

Greg
 
P

ProvoWallis

I understand that but I'm still puzzled. Is this the reason why I can't
write files to this directory?

The xrefs directory is created the way I expect it would be using mkdir
but I can't seem to write to it. I thought that my results would be
written to the xrefs directory here but they're ending up in the
original folder not the subfolder.

outputFile = open(os.path.join(xrefs,outputFname), 'w')
outputFile.write(data)
outputFile.close()

What am I missing?
 
J

jordan.taylor2

First, what version of python are you using? 2.4.2 (and some previous
versions) use file() instead of open(), although open may still work.

also, if your code in the previous post is still using:

outputFname = given + '.log'
outputFile = open(os.path.join(xrefs,outputFname), 'w')
I hope you have 'given' defined somewhere, since it's not in the code
you show.

give this a try:

output = file(xrefs + r'\filenamewhatever', 'w')
output.write(data)
output.close()
 
L

Larry Bates

Except for the fact that I don't have any idea where "given"
variable comes from. This works perfectly for me. It writes
data into <root>/xrefs/given.log perfectly.

In the future you should cut/paste your code so we can see
enough to help better. Here is my code with a few changes.

import os
import sys
root = raw_input("Enter the path where the program should run: ")
xrefs = os.path.join(root,'xrefs')

if not os.path.exists(xrefs):
os.makedirs(xrefs)

else:
sys.exit('LOG folder already exists. Exiting program.')

outputFname = 'given.log' # You need to change this line
outputFile = open(os.path.join(xrefs,outputFname), 'w')
data="this is a test\n"
outputFile.write(data)
outputFile.close()


-Larry Bates
 
D

Dennis Lee Bieber

First, what version of python are you using? 2.4.2 (and some previous
versions) use file() instead of open(), although open may still work.
open() works in ALL versions of Python, going back to at least 1.3

file() is the later addition -- for some reason. As I recall, the
consensus for file() is that one should still use open(). Please refer
to: http://mail.python.org/pipermail/patches/2005-January/016662.html


I'm running 2.3, but from the MISLEADING help system...

file( filename[, mode[, bufsize]])
<snip>
The file() constructor is new in Python 2.2. The previous spelling,
open(), is retained for compatibility, and is an alias for file().

open( filename[, mode[, bufsize]])
An alias for the file() function above.


--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top