#python #selenium #directory #path
Вопрос:
Я получаю No such file or directory: 'SnP1000_TICKR.csv'
сообщение об ошибке, но все мои файлы находятся в следующей папке:
и я вызываю файл сюда
который выполняется на этом фрагменте кода:
def finVizEngine(input,output):
import chromedriver_autoinstaller
chromedriver_autoinstaller.install() # Check if the current version of chromedriver exists
# and if it doesn't exist, download it automatically,
# then add chromedriver to path
driver = webdriver.Chrome()
ipo_df = pd.DataFrame({})
openFinViz()
with open(input, 'r') as IPO_List:
csv_reader = reader(IPO_List)
Это работало раньше, но потом я загрузил файлы в Github
и начал запускать файлы из vscode
вместо pycharm
и начал получать кучу ошибок, но, честно говоря, не понимаю, что не так. Любая помощь была бы потрясающей,
Лучший Жоао
Комментарии:
1. Python не волнует, в каком каталоге находится скрипт. Все, что волнует Python, — это ваш текущий рабочий каталог , который, вероятно, является корнем вашего проекта.
2. Как именно вы запускаете свой скрипт? например, ПРОТИВ отладчика кода, ПРОТИВ интегрального терминала кода?
3. Скорее всего, вам нужно это сделать
finVizEngine('Scripts/SnP1000_TICKR.csv, SnP1000_DATA.csv)
, такSNP1000
как это ваша базовая папка проекта4. Кроме того, называть переменную
input
-плохая практика, так как это имя встроенной функции.5. всегда указывайте код, данные и полное сообщение об ошибке в виде текста (не скриншот, не ссылка) в вопросе (не в комментарии).
Ответ №1:
Сначала проверьте, в какой папке он запускает код
import os
print( os.getcwd() )
cwd
означает Current Working Directory
.
Если он работает в другой папке, то у вас есть скрипт, а затем он также выполняет поиск csv в другой папке.
Самый простой способ-это использовать "/full/path/to/SnP1000_TICKR.csv"
.
Но более полезный метод — получить путь к папке с script
помощью-вот так
BASE = os.path.abspath(os.path.dirname(__file__))
и используйте его для создания полного пути к файлу csv
input_full_path = os.path.join(BASE, "SnP1000_TICKR.csv")
output_full_path = os.path.join(BASE, "SnP1000_DATA.csv")
finVizEngine(input_full_path, output_full_path)
кстати:
Если вы будете хранить csv
в подпапке data
, то вам понадобится
input_full_path = os.path.join(BASE, "data", SnP1000_TICKR.csv")