I am trying to create a new text file of stock symbols in the russell 2k from one that looks like this:
All I want is the ticker symbol at the end of each line. So I have the following code:
with open("russ.txt", "r") as f:
for line in f:
line = line.split()
line = line[-1]
if line == "Ticker": continue
print line
with open("output.txt", "w") as fh:
fh.seek(0,2)
print line
fh.write(line)
All I end up with in the output.txt
file is one line with the very last ticker in the list instead of all the tickers. I thought using fh.seek(0,2)
would create a new line at the end each time through. What am I doing wrong? Also, in reality I don't need to create another doc, I could just edit the current one but I couldn't figure that out either so if you could show me how to just write to the same file that also is perfectly acceptable.
The filemode "w"
creates a new empty file in each step. Either use mode "a"
for append, or move the file opening outside the loop.
with open("russ.txt", "r") as f:
for line in f:
line = line.split()
line = line[-1]
if line == "Ticker": continue
print line
with open("output.txt", "a") as fh:
fh.write(line + "\n")
or better, open the file only once:
with open("russ.txt", "r") as f, open("output.txt", "w") as fh:
for line in f:
symbol = line.split()[-1]
if symbol != "Ticker":
print symbol
fh.write(symbol + "\n")