Python 3.x 不在while循环中执行代码

Python 3.x 不在while循环中执行代码,python-3.x,while-loop,Python 3.x,While Loop,我有以下代码: from datetime import datetime, timedelta from urllib.request import urlopen from bs4 import BeautifulSoup import pandas as pd from os import path import csv from pandas_datareader import data as web from pathlib import Path import time as t

我有以下代码:

from datetime import datetime, timedelta
from urllib.request import urlopen
from bs4 import BeautifulSoup
import pandas as pd
from os import path
import csv
from pandas_datareader import data as web
from pathlib import Path
import time as t    
html = urlopen('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
    soup = BeautifulSoup(html,'lxml')
    sp500_raw = soup.find('table', {'class': 'wikitable sortable'})

    spsymbol =[]

for row in sp500_raw.findAll('tr')[1:]:
    spsymbols = row.findAll('td')[0].text.strip()
    spsymbol.append(spsymbols)

df = pd.DataFrame(spsymbol, columns=['Stock_name'])
# df = df.set_index('Stock name')




df.Stock_name.str.replace('^\d+ +','').to_csv('SP Scrapped data.csv', index=False, header=False)
stock_data = []
with open('SP Scrapped data.csv') as csvfile:
    stockticker_data = csv.reader(csvfile, delimiter=' ')
    row_count = row_count = sum(1 for row in stockticker_data)
    counter = 0
    while counter < =row_count:                 #Question regarding the while loop
        for i in range(20):
            print(row_count)
            for row in stockticker_data:        #No data is being passed to the variable row
                all_data = []
                for ticker in row:
                    stock_data.append(web.get_data_yahoo(ticker, '1/1/2008', '1/1/2019'))
                    for df in stock_data:
                        df.to_csv(ticker, header=None, index=None,columns=['Date', 'High', 'Low', 'Open', 'Close', 'Volume', 'Adj Close'], sep=' ')
            counter = counter +1
        print('sleep')
        t.sleep(10)
从datetime导入datetime,timedelta
从urllib.request导入urlopen
从bs4导入BeautifulSoup
作为pd进口熊猫
从操作系统导入路径
导入csv
从pandas_datareader以web形式导入数据
从pathlib导入路径
导入时间为t
html=urlopen('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')
soup=BeautifulSoup(html,'lxml')
sp500_raw=soup.find('table',{'class':'wikitable sortable'})
spsymbol=[]
对于sp500_raw.findAll('tr')[1:]中的行:
spsymbols=row.findAll('td')[0].text.strip()
spsymbol.append(spsymbols)
df=pd.DataFrame(spsymbol,columns=['Stock\u name'])
#df=df.set_索引('股票名称')
df.Stock_name.str.replace('^\d++','').to_csv('SP discared data.csv',index=False,header=False)
股票数据=[]
将open('SP报废数据.csv')作为csvfile:
stockticker_data=csv.reader(csvfile,分隔符=“”)
行计数=行计数=总和(stockticker\u数据中的行为1)
计数器=0
while counter<=行计数:#有关while循环的问题
对于范围(20)内的i:
打印(行数)
对于stockticker_数据中的行:#没有数据被传递到变量行
所有_数据=[]
对于行中的股票代码:
stock_data.append(web.get_data_yahoo(股票代码'1/1/2008','1/1/2019'))
对于库存中的df_数据:
df.to_csv(股票代码,标题=None,索引=None,列=['Date','High','Low','Open','Close','Volume','Adj Close',sep='')
计数器=计数器+1
打印('睡眠')
t、 睡眠(10)

我的问题是关于while循环。我试图完成的是让while循环运行20次迭代,然后进入睡眠状态10秒。但是由于某些原因,输出只是行计数,然后它休眠,并且似乎不会在print语句之后执行for循环。

使用print语句调试它并打印内容,例如
print(row)
在行中的ticker的
行之前:
因为循环可能不会发生,因为没有数据可以在循环中迭代row@ChrisDoyle您是对的,但是代码在没有while语句的情况下工作,如果是range,则不确定计数器<=row\u count:在复制粘贴时发生了什么,因为它不会运行,但是我只是说它应该被更正为
@Axiumin_,我已经修正了,请你详细说明一下为什么
会反作用,谢谢!另外,
row\u count=row\u count=sum(stockticker\u数据中的行为1)
似乎是问题所在。由于它只运行一次,这意味着
row\u count=1
。因为它们也没有错误,所以看起来是这样的。您的文档中只有一行吗?使用print语句对此进行调试,并在行中的ticker:
行的
之前打印内容,例如
print(row)
,因为循环可能不会发生,因为其中没有要迭代的数据row@ChrisDoyle您是对的,但是代码在没有while语句和if范围的情况下工作,不确定计数器
时发生了什么,行数:
在复制粘贴时似乎是一个错误,因为它不会运行,但只是说应该将其更正为
@Axiumin\u我已经解决了这个问题,请您详细说明为什么计数器时会出现
,谢谢!另外,
row\u count=row\u count=sum(stockticker\u数据中的行为1)
似乎是问题所在。由于它只运行一次,这意味着
row\u count=1
。因为它们也没有错误,所以看起来是这样的。您的文档中只有一行吗?