I am trying to troubleshoot this problem which appears to be intermittent. the function is called once per hour.
OSError: [WinError 433] A device which does not exist was specified: 'csv_files'
I trace the code back to this function, which sometimes returns an empty dataframe.
import pandas as pd
def get_existing_df(symbol:str)-> pd.DataFrame:
'''
check if file exists & get the the existing dataframe for a given symbol
args:
symbol (str): the ticker symbol
return (df, last_trade):
df: (DataFrame) of the last trades (empty df if no trades)
'''
file_name = 'csv_files/all_trades_' + symbol + '.csv'
if os.path.exists(file_name):
df = pd.read_csv(file_name, index_col=0)
else:
df = pd.DataFrame()
return df
The code uses a relative path. I can also confirm the obvious:
But every now and again the method gives me an empty dataframe, which breaks the code (with the above error).
What is causing this and how can i prevent this ?
Given that the file and path (to file) exist, it is likely to be the connection.
So, I propose the following additional check which uses the socket
module to check the connection:
import socket
def is_internet_connected():
try:
socket.create_connection(("www.google.com", 80), timeout=3)
return True
except Exception:
return False
connected = is_internet_connected()
print('checking connection:', connected)
This checks the internet connection and if it is down for more than 3 seconds, then returns False
.
This means that the code can be avoided (if not connected:
) in the event that the connection is down.