嗨,我一直在研究一些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
文件存在于本地和服务器上,并且其中包含内容。我已经抓了几百万次,并访问了每个网站,但我不知道到底是什么问题。任何帮助,我会很感激。
所以基本上你的Reader方法找不到文件并返回NONE。由于USERURLS现在为NONE,因此您无法在其上使用for循环。
在USERURLS = Reader("users.csv")
之前
试试print(os.getcwd())
那将打印程序当前的工作目录,看看你的“users.csv”文件是否在哪里。
我的代码稍微返工: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是一个可变对象,我只是在方法中发送它所以每个更改都将生效。
顺便说一句,谢谢你的帮助