用Python读/写文件

时间:2016-01-02 22:31:56

标签: python file read-write

我正试图在russell 2k中创建一个新的文本符号文本文件,如下所示:

enter image description here

我想要的只是每行末尾的股票代码。所以我有以下代码:

commentcount

我在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) 文件中得到的最后一行是列表中最后一个自动收录器而不是所有代码。我认为使用output.txt每次都会在最后创建一个新行。我究竟做错了什么?此外,实际上我不需要创建另一个文档,我只能编辑当前的文档,但我无法弄清楚,如果你能告诉我如何写入同样的文件也是完全可以接受的。

4 个答案:

答案 0 :(得分:1)

我相信使用fileinput对您来说也很方便:

import fileinput
import sys


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

fileinput.input将更改原始文件。

答案 1 :(得分:1)

filemode "w"在每个步骤中创建一个新的空文件。使用模式"a"进行追加,或者在循环外移动文件。

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

或更好,只打开一次文件:

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

答案 2 :(得分:0)

您可以将文件读入列表,然后使用.split()方法将其沿空格分割。由于ticekr是列表的最后一个元素。你可以通过负索引来获得它。

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

输入文件:

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

输出:

ST
ST
ST
ST
ST

答案 3 :(得分:0)

每次打开文件时都会覆盖该文件。将with行移到for块之外,并在写入之前寻找结尾(或以追加模式打开)。