Объект NoneType не является итеративным python3 - PullRequest
0 голосов
/ 04 марта 2019

Привет, я работал над скриптом Python, и моя проблема в том, когда я запускаю этот скрипт на сервере.Дело в том, что я создал модуль CSVmanipulation, в котором у меня есть две функции: одна для чтения из .csv, а другая для записи в файл .csv.Мой основной сценарий выглядит следующим образом:

import time
import scrape
import re
from urlload import load_urls
from setmanipulation import addToSet
from CSVmanipulation import Reader, Writer

USERSURLS = Reader("users.csv")

for newurl in USERSURLS:
    "do something"

, а мой сценарий CSVmanipulation:

import csv

def Reader(nameOfAFile):
        list = []
        if(os.path.isfile(nameOfAFile) == True):
                with open(nameOfAFile) as fajl:
                        reader = csv.reader(fajl)
                        list = [r for r in reader]
                        fajl.close()
                return list
        else:
                print("file doesnt exist")

Локально на моей машине он работает совершенно нормально, он читает из файла .csv, все, что читается,хранится в моем списке, но когда я попробовал это на сервере, я получаю следующий вывод:

file doesnt exist
'NoneType' object is not iterable

Файл существует локально и на сервере, и в нем есть содержимое.Я миллион раз почесал голову и посетил каждый сайт, но я не знаю, что, черт возьми, не так.любая помощь, которую я был бы признателен.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Немного переделать мой код: main.py:

import time
import scrape
import re
from urlload import load_urls, display
from setmanipulation import addToSet
from CSVmanipulation import Reader, Writer

USERSURLS = []
Reader("users.csv", USERSURLS)

for newurl in USERSURLS:
   "do something"

и моя CSVmanipulation выглядит так:

import os
import csv

def Reader(nameOfAFile, list):
        statment = os.path.exists(nameOfAFile)
        print(os.getcwd())
        if(statment == True):
                with open(nameOfAFile) as fajl:
                        reader = csv.reader(fajl)
                        list.extend(r for r in reader)
                        fajl.close()
        else:
                print("file doesnt exist")

        return

Я только что сделал USERSURL в начале списка пустых списковUSERSURL = [], и поскольку список является изменяемым объектом, я просто отправляю его в метод, чтобы каждое изменение вступило в силу.

Кстати, спасибо за помощь

0 голосов
/ 04 марта 2019

Таким образом, ваш метод Reader не может найти файл и возвращает NONE.Поскольку USERURLS теперь НЕТ, вы не можете использовать цикл for для него.

До USERURLS = Reader("users.csv")

Попробуйте print(os.getcwd())

.и посмотрите, где находится ваш файл "users.csv".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...