Python ошибка "FileNotFoundError: [Errno 2] Файл b Usuar ios .csv 'не существует: b Usuar ios .csv'" - PullRequest
0 голосов
/ 21 февраля 2020

Я использую pandas для чтения CSV-файла, код работает очень хорошо, когда я запускаю его на Spyder, но затем, когда я пытаюсь запустить его по приглашению anaconda или даже дважды щелкнуть по файлу .py, он делает не работать. В приглашении anaconda появляется сообщение «FileNotFoundError: [Errno 2] File b Usuar ios .csv 'не существует: b Usuár ios .csv'», даже если файл существует и находится в том же каталоге как .py файл. Я использую этот код:

import pandas 
import csv

csv_reader = pandas.read_csv("D:\\clovi\\Projetos\\Python\\Usuarios.csv",encoding='utf-8')

j=0
y = csv_reader.iloc[-1].values[0]

while True:
    i=0
    x = csv_reader.iloc[j].values
    usuario = x[i]
    i+=1
    pase = x[i]
    j+=1
    if usuario == y:
        edistribucion(usuario,pase)
        break
    else:
        edistribucion(usuario,pase)

ПРИМЕЧАНИЕ: Для чтения файла я также попытался сделать

import pandas as pd
import csv

csv_reader = pd.read_csv("Usuarios.csv")

.
.
.

Как я уже сказал, он работает хорошо, когда я Я работаю на Spyder, но больше нигде не работает. Что я делаю не так в коде?

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Введите в Spyder CLI:

import os
print(os.getcwd())

Go в результирующий каталог в Anaconda Подсказка:

cd path\from\Spyder\print

Теперь запустите ваш скрипт. Вы можете скопировать его в каталог или вызвать по пути.

0 голосов
/ 21 февраля 2020

Возможно, приглашение Anaconda не имеет прав доступа к каталогу, в котором находится CSV-файл. В этом случае вы можете изменить свой сценарий так, чтобы он принимал аргумент командной строки, а если его нет, по умолчанию укажите путь, который у вас уже есть, что-то вроде этого:

import sys
import os
import pandas 
import csv

# If there is a command-line argument, and the argument is a valid file, this matches
if len(sys.argv) > 1 and os.path.exists(sys.argv[1]):
    csv_path = sys.argv[1]
else:
    csv_path = r'D:\clovi\Projetos\Python\Usuarios.csv'

csv_reader = pandas.read_csv(csv_path,encoding='utf-8')

j=0
y = csv_reader.iloc[-1].values[0]

while True:
    i=0
    x = csv_reader.iloc[j].values
    usuario = x[i]
    i+=1
    pase = x[i]
    j+=1
    if usuario == y:
        edistribucion(usuario,pase)
        break
    else:
        edistribucion(usuario,pase)

Вы сможете динамически измените CSV, не нарушая код, поэтому в командной строке:

# This tries to process the hard-coded CSV
python clovis_magno.py

# While this processes top_secret_data.csv in your Desktop
python clovis_magno.py "C:\Users\Clovis Magno\Desktop\top_secret_data.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...