繁体   English   中英

Python:检查并添加到文本文件

[英]Python: Checking and adding to a text file

我一直在研究这个问题,并且谷歌搜索了几个小时。 我似乎无法弄清楚出了什么问题。

此程序的目的是检查股票市场自动收报机符号的文本文件,并仅在它不在文件中时添加自动收报机。

有两件事情出错了。 当文本文件为空时,它根本不会添加任何代码。 当文本文件中只有一个字符时,它会添加您提供的每个代码,无论该代码是否已经在列表中。

import re

def tickerWrite(tick):
    readTicker = open('Tickers.txt', 'r')
    holder = readTicker.readlines()
    readTicker.close()

    if check(tick) == False:
        writeTicker = open('Tickers.txt', 'w')
        holder.append(tick.upper() + '\n')
        writeTicker.writelines(holder)
        writeTicker.close()

def check(ticker):
    with open('Tickers.txt') as tList:
        for line in tList:
            if re.search(ticker, line):
                return True
            else:
                return False

另一个模块调用AddReadTickers.tickerWrite(ticker)以添加用户输入的代码。

首先。

我建议用

if not check(tick):

代替

if check(tick) == False:

然后。 我觉得最好用

writeTicker = open('Tickers.txt', 'a')

你根本不需要持有人。

只是试图重写代码

from __future__ import print_function

import re
import sys


def tickerWrite(tick):
    if not check(tick):
        with open('Tickers.txt', 'a') as writeTicker:
            print(tick.upper(), file=writeTicker)

def check(ticker):
    with open('Tickers.txt') as tList:
        for line in tList:
            return bool(re.search(ticker, line))

if __name__ == '__main__':
    tickerWrite(sys.argv[1])

它对我来说似乎有效。

  1. 函数检查应该默认返回False。 对于空的Tickers.txt,它返回None,这会导致行“if check(tick)== False:”始终为False。 这就是它不会为空文件添加任何自动收报机的原因
  2. 我的猜测是因为自动收报机的内容。 由于您使用股票代码作为模式,当股票代码包含正则表达式的一些特殊字符时,可能会导致意外结果。 根据我的理解,你可以只使用代码

if ticker==line:
    return True
else:
    return False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM