使用 Python 下载和查看 CSV

Downloading and Viewing CSV with Python

对 python 很陌生,正在尝试通过 FTP 下载 CSV。 我已将连接转到正确的文件夹,但我还想打印表格。

import pandas as pd 
from ftplib import FTP
ftp = FTP('f20-preview.xxx.com')
ftp.login(user='xxx_test', passwd = 'xxxxxxx')
ftp.cwd('/testfolder/')
def grabFile():

    filename = 'MOCK_DATA.csv'
    localfile = open(filename, 'wb')
    ftp.retrbinary('RETR ' + filename, localfile.write, 1024)
data = pd.read_csv(filename) 
data.head()

这会导致 nameError,文件名未定义?我可能会混淆自己,所以澄清会有所帮助。

您能否使用 absolute/full 路径而不只是 CSV 文件的名称?我的猜测是它在错误的文件夹中查找。

在您的代码中,您正在定义一个函数,永远不要调用它,然后您期望在该函数中找到一个定义的变量。

解决问题的一种方法是完全消除带有 def 的行。

一个可能更好的解决方案是这样的

import pandas as pd 
from ftplib import FTP

# reusable method to retrieve a file
def grabFile(ftp_obj, filename):
    localfile = open(filename, 'wb')
    ftp.retrbinary('RETR ' + filename, localfile.write, 1024)

# connect to the ftp server
ftp = FTP('f20-preview.xxx.com')
ftp.login(user='xxx_test', passwd = 'xxxxxxx')
ftp.cwd('/testfolder/')


# then get files and work them

# having a "target file"
filename = 'MOCK_DATA.csv' 
# grab the file
grabFile(ftp, filename)
# work the file
data = pd.read_csv(filename) 
data.head()  
# now you could still use the same connected ftp object and grab another file, and so on

鉴于您提供的功能,python 脚本的工作目录和 CSV 的存储位置必须相同。

但是,您没有调用该函数。

如果您调用该函数并得到相同的错误,那么很可能 MOCK_DATA.csv 不在位置 /testfolder/MOCK_DATA.csv 中,您将 运行 遇到问题。

访问它的方法是删除 def grabFile。

您没有调用 "grabfile" 函数。但其他答案似乎有助于缓解该问题,因此我将仅分享一些用于处理数据集的生活质量代码

我经常将我的数据文件存储在与 python 代码不同的文件夹中,因此如果您希望将输入数据放在另一个文件夹中,这可以帮助您保持井然有序。

import os
import pandas as pd
original_dir = os.getcwd()
os.chdir('/home/user/RestOfPath/')
data = pd.read_csv('Filename')
os.chdir(original_dir)
data.head()