Объект 'str' не вызывается, даже если в коде не используется str - PullRequest
0 голосов
/ 11 ноября 2018

Я получаю эту ошибку. как это решить? пожалуйста, помогите мне.

# Import pandas
import pandas as pd
import csv

# Load csv
#df = pd.read_csv("D:\Harsha\Trading\cm14SEP2018bhav.csv")

# Read in csv file
#for row in csv.reader(open("D:\Harsha\Trading\cm14SEP2018bhav.csv"), delimiter=','):
      #print(row)
#import csv

infile = 'H:\cm09NOV2018bhav.csv'
outfile = 'H:\output_cm09NOV2018bhav.csv'

wfh = open (outfile, 'w')

with open(infile, 'r') as fh:

    reader = csv.DictReader(fh, delimiter=',')
    wfh.write("{},{},{},{},{},{},{}".format("SYMBOL", "OPEN", "HIGH", "LOW", "CLOSE", "ISIN", "TOTTRDQTY", "STATUS"))
    wfh.write("\n")
    for row in reader:
        symbol = row['SYMBOL']
        series = row['SERIES']
        open = row['OPEN']
        high = row['HIGH']
        low = row['LOW']
        close = row['CLOSE']
        last = row['LAST']
        prevclose = row['PREVCLOSE']
        tottrdqty = row['TOTTRDQTY']
        tottrdval = row['TOTTRDVAL']
        timestamp = row['TIMESTAMP']
        totaltrades = row['TOTALTRADES']
        isin = row['ISIN']
        print(low.rstrip())
        if float(high.rstrip()) in [9,25,49,81,121,169,225,289,301,441,529,625]:
            wfh.write("{},{},{},{},{},{},{},{}".format(symbol, open, high, low, close, isin, tottrdqty, "SELL"))
            wfh.write("\n")
        elif float(low.rstrip()) in [9,25,49,81,121,169,225,289,301,441,529,625]:
            wfh.write("{},{},{},{},{},{},{},{}".format(symbol, open, high, low, close, isin, tottrdqty, "BUY"))
            wfh.write("\n")
        elif float(close.rstrip()) in [9,25,49,81,121,169,225,289,301,441,529,625]:
            wfh.write("{},{},{},{},{},{},{},{}".format(symbol, open, high, low, close, isin, tottrdqty, "CLOSE PRICE"))
            wfh.write("\n")
        elif float(open.rstrip()) in [9,25,49,81,121,169,225,289,301,441,529,625]:
            wfh.write("{},{},{},{},{},{},{},{}".format(symbol, open, high, low, close, isin, tottrdqty, "OPEN PRICE"))
            wfh.write("\n")

#wfh._archive.close()
wfh.close()

Я не использовал str в моем коде. Почему я получаю эту ошибку?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

нашел его:

        open = row['OPEN']

этот код переназначает ключевое слово python open (которое вы используете для открытия файлов) с содержимым row['OPEN'], что означает, что теперь, когда вы вызываете open, вы вызываете объект str, а не функцию.

рассмотрим это:

print(type(open))
# <class 'builtin_function_or_method'>
open = 'hello, world'
print(type(open))
# print(type('hello, world'))

вы больше не можете вызывать open (то есть open('file.txt', 'r')), потому что это строка, а не функция.

0 голосов
/ 04 декабря 2018

Я считаю, , когда вы используете формат для печати, вам следует избегать добавления строкового значения в аргумент формата .

поэтому весь код, который пишет в файл wfh, выглядит так:

wfh.write("{},{},{},{},{},{},{},{}".format(symbol, open, high, low, close, isin, tottrdqty, "SELL"))

необходимо изменить на:

wfh.write("{},{},{},{},{},{},{},SELL".format(symbol, open, high, low, close, isin, tottrdqty))
# here 'Sell' is a part of the print argument which is already under quotes.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...