Skip to content Skip to sidebar Skip to footer

Reading/writing Files In Python

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 foll

Solution 1:

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.

withopen("russ.txt", "r") as f:
    for line in f:
        line = line.split()
        line = line[-1]
        if line == "Ticker": continueprint line
        withopen("output.txt", "a") as fh:
            fh.write(line + "\n")

or better, open the file only once:

withopen("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")

Solution 2:

I believe using fileinput will be also handy in your case:

import fileinput
import sys


for line in fileinput.input("russ.txt", inplace=1):
    sys.stdout.write(line.split(' ')[-1])

fileinput.input will change original file.

Solution 3:

You're overwriting the file each time you open it. Move the with line outside of the for block, and seek to the end before writing (or open in append mode).

Solution 4:

You can read the file into a list and then use the .split() method to split it along the spaces. Since the ticekr is the last element of the list. You can get it via negative indexing.

f = [line.strip() for line in open('so.txt')]
for i in f:
    print i.split(' ')[-1]

Input file:

STARK INDUSTRIES ST
STARK INDUSTRIES ST
STARK INDUSTRIES ST
STARK INDUSTRIES ST
STARK INDUSTRIES ST

Output:

ST
ST
ST
ST
ST

Post a Comment for "Reading/writing Files In Python"