【发布时间】:2015-08-12 22:17:37
【问题描述】:
使用 Python 3.4
我正在生成类似于“Report_XXXXXX.xlsx”的文件,其中 X 是唯一的客户编号。我有一台服务器,其中包含名为“XXXXXX.CustomerName”的文件夹。我正在尝试遍历每个文件/报告并根据客户编号将其上传到匹配的文件夹。我有一些东西可以在我的小型测试环境中运行,但我认为它并没有按照我想要的方式运行。它上传文件,但我试图在找不到匹配项的任何时候捕捉。目前,它使我对每个文件的 IF 语句都失败了。我想我循环了太多次或错误的项目。
import os
import ftplib
creds = [line.rstrip('\n') for line in open('C:\\folder\\credentials.txt')]
ftp = ftplib.FTP_TLS("server.com")
ftp.login(creds[0], creds[1])
ftp.prot_p()
src_dir = 'C:\\Reports\\'
src_files = os.listdir('C:\\Reports\\')
for folder_name in ftp.nlst():
for file_name in src_files:
if folder_name[0:6] == file_name[7:-5]:
ftp.cwd('/'+folder_name)
open_file = open(src_dir+file_name, 'rb')
ftp.storbinary('STOR '+file_name, open_file)
open_file.close()
else:
print('Folder ' + folder_name + ' Not Found')
ftp.quit()
例如,源目录有 3 个文件:'Report_100002.xlsx, Report_100003.xlsx, Report_100007.xlsx' 服务器有匹配的文件夹和一些额外的文件夹。文件上传,输出如下:
Folder 100000.CustomerName Not Found
Folder 100000.CustomerName Not Found
Folder 100000.CustomerName Not Found
Folder 100002.CustomerName Not Found
Folder 100002.CustomerName Not Found
Folder 100003.CustomerName Not Found
Folder 100003.CustomerName Not Found
Folder 100007.CustomerName Not Found
Folder 100007.CustomerName Not Found
我正在尝试达到一个状态,我可以正确记录每个项目以及它是否成功、它落在哪个文件夹等...
【问题讨论】:
-
为什么是
ftpdir = ftp.nlst(),然后是for folder_name in ftp.nlst()?做两次似乎很愚蠢......使用一个或另一个 -
heinst - 抱歉,我稍后打印它以查看结果,所以我将其删除
-
显示
print(ftp.nlst())和print(src_files)。
标签: python python-3.x ftp