Поиск файла CSV для отображения данных с кодом VS - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь открыть данные из файла CSV в моем терминале Visual Studio и получить:

'' ''

Traceback (most recent call last):
  File "/home/jubal/ CrashCourse Python Notes/Chapter 16 CC/Downloading Date/csv 
format/highs_lows.py", line 7, in <module>
    with open(filename) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'sitka_weather_2018_full.csv'

'' ''

а вот программа highs_lows.py, она сохраняется в той же папке, что и sitka_weather_2018_full.csv

'' ''

    import csv

filename = 'sitka_weather_2018_full.csv'
with open(filename) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    highs = []
    for row in reader:
        highs.append(row[8])

print(highs)

'' ''

Мой latop запускает linux mint 19.2 cinnamon, также я могу нормально запускать эту программу с ноутбуком jupyter, но когда я пытаюсь преобразовать ее в программу python и запустить ее в терминале кода VS, возникает эта проблема. Новичок ie в программировании, поэтому любая помощь будет отличной. Спасибо за ваше время!

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Вот как я интерпретировал ответ из предыдущих постов.

import os
import csv


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)
    header_row = next(reader)

    highs = []
    for row in reader:
        highs.append(row[8])


    print(highs)

И все работает!

0 голосов
/ 03 мая 2020

Я предполагаю, что вы запускаете скрипт в терминале, который не находится в той же подпапке, что и скрипт и 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"

Здесь - это еще один пост, который более углубленно описывает концепцию:

...