【问题标题】:Retrieve information from txt file to use as a variable in a python file从 txt 文件中检索信息以用作 python 文件中的变量
【发布时间】:2016-04-13 20:21:37
【问题描述】:

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

我的stocks.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)

【问题讨论】:

  • 简单的改变是str(openFile.read())变成openFile.readlines()
  • 事后别忘了openFile.close()

标签: python string variables text extract


【解决方案1】:

你的问题是线

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()) 以删除这些
  • 正如评论中指出的,您忽略了关闭文件。您可以添加显式关闭语句或使用上下文管理器,如下所示。
  • 这可能只是因为您精简了代码,但典型的约定是将函数定义放在任何已执行的代码之前(不包括导入)
  • 这个很小众,我一直看是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())

【讨论】:

  • 非常感谢!像魅力一样工作:)
  • @Rico,很高兴听到这个消息。由于此答案解决了您的问题,请将其标记为“已接受”
  • 完成!谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2022-06-30
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
相关资源
最近更新 更多