Python将FTP中的CVS组合并输出

时间:2019-08-02 14:37:33

标签: python pandas csv dataframe ftp

我已经研究了一段时间,但是我发现很难找到适合我特定情况的示例,我想将所有CSV都保存在FTP上的文件夹中,然后将它们组合在一起,然后显示出来。我已经能够很好地抓取单个文件,但是当将其与多个文件混合并合并时,我会出现一个错误,指出

TypeError                                 Traceback (most recent call last)
<ipython-input-14-7b3417be9f4e> in <module>
     19    print (mycsvdir)
     20 
---> 21 csvfiles = glob.glob(os.path.join(mycsvdir , '*.csv'))
     22 dataframes = []
     23 for csvfile in csvfiles:

c:\users\xxx\appdata\local\programs\python\python37-32\lib\ntpath.py in join(path, *paths)
     74 # Join two (or more) paths.
     75 def join(path, *paths):
---> 76     path = os.fspath(path)
     77     if isinstance(path, bytes):
     78         sep = b'\\'

TypeError: expected str, bytes or os.PathLike object, not list

我将所有这些都合并到一个文件中,它不应该只是一个列表,所以我猜我在根本上做错了。 完整代码-

import glob
import os
import pandas as pd
import ftplib
from ftplib import FTP
def grabFile(ftp_obj, filename):
    localfile = open(filename, 'wb')
    ftp.retrbinary('RETR ' + filename, localfile.write, 1024)

ftp = FTP('f20-preview.xxx.com')
ftp.login(user='xxx', passwd = 'xxx')
ftp.cwd('/testfolder/')


mycsvdir = []
ftp.dir(mycsvdir.append)
files = []
for line in mycsvdir:
   print (mycsvdir)

csvfiles = glob.glob(os.path.join(mycsvdir , '*.csv'))
dataframes = []
for csvfile in csvfiles:
    df = pd.read_csv(csvfile)
    dataframes.append(df)

result = pd.concat(dataframes, ignore_index=True)

result.to_csv('all.csv', index=False)


data = pd.read_csv('all.csv') 
data.head()  

我是python的新手,我的很多经验来自阅读有关该问题的非常老的帖子和课程,为我的天真致歉

1 个答案:

答案 0 :(得分:0)

mycsvdir = []
...    
csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv'))

mycsv是一个列表。 os.path.join期望第一个参数为str, bytes or os.PathLike object

>>> root = 'a:\\b\\'
>>> f = 'foo.txt'
>>> os.path.join(root,f)
'a:\\b\\foo.txt'

使用文件名列表,遍历该列表并为每个名称创建路径。

>>> fnames = ['a.txt', 'b.txt', 'c.txt']
>>> for name in fnames:
    print(os.path.join(root,name))

a:\b\a.txt
a:\b\b.txt
a:\b\c.txt
>>> 

相关:
Using Python's ftplib to get a directory listing, portably
Python: How to get list of file and use wildcard in FTP directory?

还有许多其他人使用python ftp get list of filespython ftp list files

搜索