I got this error after running my code:
Traceback (most recent call last):
File "/home/ubuntu/new.py", line 57, in <module>
transform_data_into_csv(n_files=20, filename='data.csv')
File "/home/ubuntu/new.py", line 32, in transform_data_into_csv
files = sorted(os.listdir(parent_folder), reverse=True)
FileNotFoundError: [Errno 2] No such file or directory: 'app/raw_files'
Could you help me please to find why I got it? I checked, and I do have this folder and file. I create it in the first function. I would like to read json information from the first function.
import datetime
import os
import requests
import json
def getting_weather():
api_key = 'XXX'
cities = ['paris', 'london', 'washington']
filepath = 'app/raw_files'
if os.path.exists(filepath) == False:
os.makedirs(filepath, mode = 511, exist_ok= False)
os.chdir(filepath)
json_cities = []
for city_name in cities:
r = requests.get('http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={API_key}'.format(city_name=city_name,API_key=api_key))
filename = datetime.datetime.today().strftime('%Y-%m-%d %H:%M')+'.json'
output = '{text}'.format(text=r.json())
json_cities.append(output)
with open(filename, 'a') as file:
file.write(json.dumps(json_cities))
getting_weather()
def transform_data_into_csv(n_files=None, filename='data.csv'):
parent_folder = '/app/raw_files'
files = sorted(os.listdir(parent_folder), reverse=True)
if n_files:
files = files[:n_files]
dfs = []
for f in files:
with open(os.path.join(parent_folder, f), 'r') as file:
data_temp = json.load(file)
for data_city in data_temp:
dfs.append(
{
'temperature': data_city['main']['temp'],
'city': data_city['name'],
'pression': data_city['main']['pressure'],
'date': f.split('.')[0]
}
)
df = pd.DataFrame(dfs)
print('n', df.head(10))
df.to_csv(os.path.join('/app/clean_data', filename), index=False)
transform_data_into_csv(n_files=20, filename='data.csv')
Sorry for long code. Thank u for reading.
Best regards
2
Answers
Your
parent_folder
is form of absolute path.Try to change it into
'app/raw_files'
or'./app/raw_files'
instead of'/app/raw_files'
.Change this line
to
Because you have used a forward slash, therefore it will look the folder
app
insidethe folder given before the slash
.And, since there is no folder before slash. Therefore the code is not working.
Thank You. Hopefully Helpful.