Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Writing out to a directory in python

  1. Feb 9, 2010 #1
    Hi, I have a program which is reading in line by line information, saving that, and writing it out to a file. How do I change where the files are created? Also, can I create a folder to write the files out to in my program?

    The second issue I have is this. right now my program opens the file, reads a line, writes a line, reads a line, writes a line, until its finished. I want it to read all of the lines, then open the file, then write all of them. Would I save all my lines to an array then fout.write(array[0:x],'w')??
     
    Last edited: Feb 9, 2010
  2. jcsd
  3. Feb 9, 2010 #2
    os.chdir(path) changes the dir. readlines() will read all the lines in a file.
     
  4. Feb 9, 2010 #3
    os.mkdir(newdir)

    Think like a python person: lists, dude, lists.
    You can do the readlines in a list iteration:
    newtxt = open(newtext, 'w')
    words = [readlines(file) for file in file_list]
    text = " ".join(words)
    newtxt.write(text)
     
    Last edited: Feb 9, 2010
  5. Feb 10, 2010 #4
    I had the list and it wasnt working. But i figured it out. apparantly the newtxt.write function will not work for multiple lines. I had a list of lines from 0 - x and i was trying to use newtxt.write(list[0:x]) and it was giving me some stupid out of range errors. But I got it and if you wanted to know its the newtxt.writelines function. but thanks
     
  6. Feb 10, 2010 #5
    Thanks. The whole point of using the join is to get around the weird list things. You effectively turn the text into one long string that you're writing out. A "\n".join(text) may work for creating new lines.
     
  7. Feb 10, 2010 #6
    yeah the endline wasnt an issue here. It seems that the line that i read out of a file included some form of endline so that when i saved them to my list it saved the endline too
     
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook