'NoneType'对象不是可迭代的python3

问题描述 投票:0回答:2

嗨,我一直在研究一些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

文件存在于本地和服务器上,并且其中包含内容。我已经抓了几百万次,并访问了每个网站,但我不知道到底是什么问题。任何帮助,我会很感激。

ubuntu python-3.7 import-from-csv
2个回答
0
投票

所以基本上你的Reader方法找不到文件并返回NONE。由于USERURLS现在为NONE,因此您无法在其上使用for循环。

USERURLS = Reader("users.csv")之前

试试print(os.getcwd())

那将打印程序当前的工作目录,看看你的“users.csv”文件是否在哪里。


0
投票

我的代码稍微返工: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"

我的CSV操作看起来像这样:

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 = [],并且因为list是一个可变对象,我只是在方法中发送它所以每个更改都将生效。

顺便说一句,谢谢你的帮助

© www.soinside.com 2019 - 2024. All rights reserved.