Reading/writing 个文件 Python
Reading/writing files in Python
我正在尝试从如下所示的 russell 2k 股票代码创建一个新的文本文件:
我只想要每行末尾的股票代码。所以我有以下代码:
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
文件中得到的只是一行,其中包含列表中的最后一个代码,而不是所有代码。我认为使用 fh.seek(0,2)
会在每次结束时创建一个新行。我究竟做错了什么?此外,实际上我不需要创建另一个文档,我可以只编辑当前文档,但我也无法弄清楚,所以如果你能告诉我如何只写入同一个文件,那也是完全可以接受的。
您可以将文件读入列表,然后使用.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
您每次打开文件时都会覆盖它。将 with
行移到 for
块之外,并在写入之前查找到末尾(或以追加模式打开)。
我相信使用 fileinput
对你的情况也会很方便:
import fileinput
import sys
for line in fileinput.input("russ.txt", inplace=1):
sys.stdout.write(line.split(' ')[-1])
fileinput.input
将更改原始文件。
文件模式"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")
我正在尝试从如下所示的 russell 2k 股票代码创建一个新的文本文件:
我只想要每行末尾的股票代码。所以我有以下代码:
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
文件中得到的只是一行,其中包含列表中的最后一个代码,而不是所有代码。我认为使用 fh.seek(0,2)
会在每次结束时创建一个新行。我究竟做错了什么?此外,实际上我不需要创建另一个文档,我可以只编辑当前文档,但我也无法弄清楚,所以如果你能告诉我如何只写入同一个文件,那也是完全可以接受的。
您可以将文件读入列表,然后使用.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
您每次打开文件时都会覆盖它。将 with
行移到 for
块之外,并在写入之前查找到末尾(或以追加模式打开)。
我相信使用 fileinput
对你的情况也会很方便:
import fileinput
import sys
for line in fileinput.input("russ.txt", inplace=1):
sys.stdout.write(line.split(' ')[-1])
fileinput.input
将更改原始文件。
文件模式"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")