Я предполагаю, что вы запускаете скрипт в терминале, который не находится в той же подпапке, что и скрипт и csv.
Чтобы убедиться в этом, вы можете просто перейти в подкаталог и запустить скрипт там.
Чтобы иметь возможность вызывать скрипт из любого каталога, вы можете указать абсолютные пути вместо относительных путей в вашей программе.
Вы можете получить абсолютный путь, например:
import os
CURRENT_DIR = os.path.dirname(__file__)
file_path = os.path.join(CURRENT_DIR, 'sitka_weather_2018_full.csv')
with open(file_path) as f:
reader = csv.reader(f)
...
Редактировать __file__
объяснение:
__file__
- это специальная переменная Python, отмеченная двойным подчеркиванием с каждой стороны, также называемая переменными "dunder" , Переменная __file__
определяется как Python для каждого модуля, который она импортирует или выполняет, и содержит путь, указывающий на текущий модуль.
Поэтому, если вы выполняете свой скрипт с python highs_lows.py
, переменная устанавливается на
"/home/jubal/ CrashCourse Python Notes/Chapter 16 CC/Downloading Date/csv
format/highs_lows.py"
Так как, в этом случае вы хотите узнать путь к csv-файлу в том же каталоге, мы вырезали путь, чтобы исключить имя вашего скрипта и только сохранить путь к каталогу:
CURRENT_DIR = os.path.dirname(__file__)
На последнем шаге нам нужно объединить путь к каталогу с путем к csv-файлу, чтобы получить абсолютный путь, например:
"/home/jubal/ CrashCourse Python Notes/Chapter 16 CC/Downloading Date/csv
format/sitka_weather_2018_full.csv"
вместо относительный путь в вашем первом примере "./sitka_weather_2018_full.csv"
Здесь - это еще один пост, который более углубленно описывает концепцию: