python - Python 结合来自 FTP 的 CVS 并输出它们
问题描述
我已经对此进行了一段时间的研究,但我发现很难为我的具体案例找到任何示例,我想在 FTP 上的一个文件夹中获取所有 CSV,然后将它们组合在一起然后显示它们。我已经能够很好地抓取单个文件,但是当将它与多个文件混合并组合时,我往往会收到一个错误说明
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 比较陌生,我的很多经验都来自阅读关于这个问题的非常古老的帖子和课程,我为我的天真道歉
解决方案
mycsvdir = []
...
csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv'))
mycsv
是一个列表。os.path.join
期望 astr, 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
>>>
相关:
使用 Python 的 ftplib 获取目录列表,可移植
Python:如何获取文件列表并在 FTP 目录中使用通配符?
有许多其他人使用python ftp get list of files
或搜索python ftp list files
推荐阅读
- c# - 数据未通过 SQLDataAdapter 加载到 GridView
- java - 在java中创建另一个类的对象时找不到符号错误而没有仅在windows中扩展
- c# - 我如何模拟在控制器操作中调用的另一种方法?
- python - 如何为多个值索引python df
- python - Django模型将多个传感器浮点存储到一个字段中
- php - 由于错误的 htaccess,Laravel 重定向到 index.php laravel 5.6
- linq - LINQ OrderBy 和 StringBuilder
- python - Python:无法正确将文本转换为 csv
- testing - 如何使用 Selenium 使用 NVDA/jaws 屏幕阅读器自动进行可访问性测试?
- https - 无法通过 Sim 800 向 thingspeak 发送数据