gpt4 book ai didi

将文件放到 iSeries 上时 Python ftplib 错误 426

转载 作者:行者123 更新时间:2023-12-01 01:48:00 25 4
gpt4 key购买 nike

有一个我自己似乎无法解决的特殊问题..

我正在尝试使用 Python 的 ftplib 库将目录中的文件列表通过 FTP 传输到 iSeries IFS。

请注意,这些文件位于 python 脚本下方的单个子目录中。

下面是给我带来麻烦的代码摘录:

from ftplib import FTP
import os

localpath = os.getcwd() + '/Files/'

def putFiles():
hostname = 'host.name.com'
username = 'myuser'
password = 'mypassword'
myftp = FTP(hostname)
myftp.login(username, password)
myftp.cwd('/STUFF/HERE/')
for file in os.listdir(localpath):
if file.endswith('.csv'):
try:
file = localpath + file
print 'Attempting to move ' + file
myftp.storbinary("STOR " + file, open(file, 'rb'))
except Exception as e:
print(e)

我抛出的具体错误是:

Attempting to move /home/doug/Files/FILE.csv
426-Unable to open or create file /home/doug/Files to receive data.
426 Data transfer ended.

到目前为止我已采取的故障排除措施:

  1. 最初我认为这是包含我的文件的目录的权限问题。我使用 chmod 777/home/doug/Files 并重新运行我的脚本,但出现了同样的异常。
  2. 接下来我假设我的机器和 iSeries 之间存在问题。我验证了我确实可以使用 ftp 来放置文件。我成功地使用 shell FTP 将文件放到 iSeries IFS 上。

谢谢!

解决方案

from ftplib import FTP
import os

localpath = os.getcwd() + '/Files/'

def putFiles():
hostname = 'host.name.com'
username = 'myuser'
password = 'mypassword'
myftp = FTP(hostname)
myftp.login(username, password)
myftp.cwd('/STUFF/HERE/')
for csv in os.listdir(localpath):
if csv.endswith('.csv'):
try:
myftp.storbinary("STOR " + csv, open(localpath + csv, 'rb'))
except Exception as e:
print(e)

最佳答案

正如所写,您的代码正在尝试执行以下 FTP 命令:

STOR /home/doug/Files/FILE.csv

这意味着它正在尝试在 IFS 上创建 /home/doug/Files/FILE.csv。这是你想要的吗?我怀疑它不是,因为您费心将远程目录更改为 /STUFF/HERE/

如果您尝试发出命令

STOR FILE.csv

那么你必须小心如何处理你命名为file的Python变量。一般来说,不建议您重新分配作为 for 循环目标的变量,正是因为可能会发生这种类型的混淆。为 localpath + file 选择不同的变量名称,并在 open(..., 'rb') 中使用它。

顺便说一句,您似乎正在使用 Python 2,因为有一个没有括号的裸 print 语句。我确信您现在已经知道推荐使用 Python 3,但是如果您坚持使用 Python 2,建议您避免使用 file 作为变量名,因为它实际上意味着以下内容: Python 2(它是类型的名称;具体来说,是 open 函数的返回类型)。

关于将文件放到 iSeries 上时 Python ftplib 错误 426,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51032967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com