簡體   English   中英

為什么 FileNotFoundError: [Errno 2] 如果我在 Python 中有它,則沒有這樣的文件或目錄?

[英]Why FileNotFoundError: [Errno 2] No such file or directory if I do have it in Python?

運行代碼后出現此錯誤:

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'

你能幫我找出我得到它的原因嗎? 我檢查了,我確實有這個文件夾和文件。 我在第一個函數中創建它。 我想從第一個函數中讀取 json 信息。

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')

在此處輸入圖像描述

對不起,長代碼。 謝謝你的閱讀。 此致

您的parent_folder是絕對路徑的形式。

嘗試將其更改為'app/raw_files''./app/raw_files'而不是'/app/raw_files'

更改此行

parent_folder = '/app/raw_files'

parent_folder = 'app/raw_files'

因為您使用了正斜杠,所以它會the folder given before the slash夾中查找文件夾app

而且,由於斜線之前沒有文件夾。 因此代碼不起作用。

謝謝你。 希望有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM