从txt文件中检索信息以用作python fi中的变量

2024-04-18 05:19:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个问题,我想从一个文本文件中提取股票名称,以便在多个python脚本中使用,这样,如果我添加一个或多个股票,就不必更改所有python文件。你知道吗

我的股票.txt文件是:

AAPL
GOOG
TSLA

如果我导入这个脚本,它会保存A.txt、A.txt、p.txt、L.txt、G.txt等

每一个字母都是分开的。我怎样才能改变我的代码,使它需要AAPL,GOOG和TSLA?你知道吗

谢谢你!你知道吗

我的简化脚本:

import urllib2
import time
import datetime
import os

filePath = os.path.abspath('stocks.txt')
openFile = open(filePath, 'r')
stockToPull = str(openFile.read())

def pullData(stock):
    try:
        saveFileLine = "today_data\\" +stock+".txt"

    except Exception, e:
        print 'main loop', str(e)

while True:
    for eachStock in stockToPull:
        pullData(eachStock)

Tags: 文件importtxt脚本osstock股票goog
1条回答
网友
1楼 · 发布于 2024-04-18 05:19:07

你的问题就是底线

stockToPull = str(openFile.read())

这是将openFile的全部内容作为单个字符串。因此,当您遍历stockToPull时,您就是在遍历一个字符串,该字符串生成一系列单个字母

而是使用

stockToPull = openFile.readlines()

file.readlines()生成文件中所有行的列表。如果文件特别大,或者不需要中间变量,也可以直接循环文件,如下所示:

while True:
    for eachStock in openFile:
         pullData(eachStock)

其他一些无关的评论:

  • 在编写代码时,while True:将创建一个无限循环
  • 文件中的数据通常有额外的\n或空格字符,请考虑添加pullData(eachStock.strip())以删除这些字符
  • 正如在评论中指出的那样,您忽略了关闭文件。您可以添加显式close语句,也可以使用上下文管理器,如下所示。你知道吗
  • 这可能只是因为代码被精简了,但典型的惯例是将函数定义放在任何执行的代码之前(不包括导入)
  • 这个很小,我一直认为它是except Exception as e:,这是更可读的东西
  • 使用os.path.join()创建文件路径字符串。或者在这里您可以使用原始字符串来防止需要\\

把它们放在一起

import urllib2
import time
import datetime
import os

def pullData(stock):
    try:
        saveFileLine = os.path.join("today_data", stock+".txt")   
    except Exception as e:
        print 'main loop', str(e)

filePath = os.path.abspath('stocks.txt')
with open(filePath, 'r') as openFile:
    for eachStock in openFile:
         pullData(eachStock.strip())

相关问题 更多 >